吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7732|回复: 3
收起左侧

[其他转载] 【笔记】批处理实现ANSI和UTF-8编码互转

[复制链接]
i.i 发表于 2019-3-18 00:21
本帖最后由 i.i 于 2020-11-23 23:34 编辑

ANSI和UTF-8编码互转,利用VBS实现的教程在网上很多,这是我用批处理实现的代码
因为最近在写一个尽量用纯批处理实现的脚本,遇到了编码转换的问题,借鉴了这个论坛的帖子得以解决:http://www.bathome.net/thread-43846-1-1.html
20-11-23 更新,将需要处理的文本文件拖拽到批处理即可转换

下面直接放代码:
[Plain Text] 纯文本查看 复制代码
::UTF-8 to ANSI
::UTF-8 → Unicode
CHCP 65001
::如果输入的 UTF-8 没有 BOM,%~dpn1_unicode-without-BOM.txt 打开乱码
CMD /D /U /C  TYPE %~1 > %~dpn1_unicode-without-BOM.txt
::取得 Unicode BOM
ECHO.//4=>U.bom
certutil -decode -f U.bom U.bom >NUL
::Unicode → Unicode BOM
CHCP 936
MOVE /y  U.bom  %~dpn1_Unicode-BOM.txt >NUL
TYPE %~dpn1_unicode-without-BOM.txt >> %~dpn1_Unicode-BOM.txt
::Unicode BOM → ANSI
TYPE %~dpn1_Unicode-BOM.txt > %~dpn1_ANSI.txt
DEL /Q /F %~dpn1_unicode-without-BOM.txt %~dpn1_Unicode-BOM.txt

[Plain Text] 纯文本查看 复制代码
:: ANSI To UTF-8
@ECHO OFF
SETLOCAL EnableDelayedExpansion
:: Get BOM(Byte order mark): ZERO WIDTH NO-BREAK SPACE
:: "绿图" in unicode: \u7eff\u56fe
SET GBK=绿图
CHCP 1252 >NUL
FOR /F %%a IN ('CMD/D/U/C ECHO !GBK!') DO SET b=%%a
:: Use UTF-16 Little-Endian
SET HEAD=!b:~0,1!!b:~2,1!
SET /P=!HEAD!<nul>U.BOM
::ANSI → Unicode BOM
CHCP 936
MOVE /y U.BOM %~dpn1_Unicode-BOM.txt
CMD /D /U /C TYPE %~1 >> %~dpn1_Unicode-BOM.txt
::Unicode BOM → UTF-8
CHCP 65001
TYPE %~dpn1_Unicode-BOM.txt > %~dpn1_UTF-8.txt
DEL %~dpn1_Unicode-BOM.txt
CHCP 936

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zhaosiyu2010 发表于 2020-2-18 17:19
这个是怎么用的?
 楼主| i.i 发表于 2020-8-10 14:27
本帖最后由 i.i 于 2020-11-23 23:35 编辑

确实有点问题,但是已经改好了

直接将文本文件拖放到批处理即可
zhaosiyu2010 发表于 2020-8-31 10:09
i.i 发表于 2020-8-10 14:27
确实有点问题但是已经改好了

UTF-8 转 ANSI 把文件名改成 UTF-8.txt 然后同目录执行一下就ok

谢谢,了解。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-23 12:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表