我有一个用来创建批处理文件的程序。我的问题是程序的输出是 UTF-8,所以只要像 é,à,ö,Ä 这样的变音符号出现在我的批处理文件中,它就会失败。似乎我无法在创建批处理文件的程序中将输出转换为除 UTF-8 之外的任何内容。
所以我正在考虑创建两个 bach 文件。实际的一个和另一个将实际的从 UTF-8 转换为 ANSI(Windows 代码页 1252,或者可能是 cp 850),然后在此之后执行它。当然,我会添加一个 chcp xxxx 作为实际批处理文件的第一个命令。
所以我的问题是 Windows 上是否有 iconv 的替代方法 - 或者如何使用第二个批处理文件将 UTF-8 文本文件转换为 Windows 代码页。Win XP 及更高版本中是否有任何我可以使用的内置工具,或者是否有我可以使用的免费和可再分发工具?
笔记:
chcp 65001
不适用于批处理文件。
编辑1:
在 Windows XP 上,我创建了两个批处理文件来测试第一个答案。
1.bat 编码为 UTF-8 没有 BOM 包含:
chcp 1252
cd üöä
2.bat 也编码为没有 BOM 的 UTF-8 - 但没有任何特殊字符包含:
chcp 1252
type "1.bat" >"ansi_file.bat"
执行 2.bat 时创建的结果 ansi_file.bat 仍将是 utf-8 编码而不是 ansi 编码。
编辑2:
提到的反向过程有效。
chcp 1252
echo ü > ansi.txt
cmd /u /c type ansi.txt > unicode.txt
但以下后续行都不是
cmd /a /c type unicode.txt > back2ansi.txt
type unicode.txt > back2ansi_v2.txt
让我回到ANSI。我在 Win XP 和 Win 7 上都试过这个。有人可以帮忙吗?
笔记:
我知道如何使用 Windows Script Host 和 VBS。我想避免依赖脚本主机。VBS方法在这里详细介绍:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa368046%28v=vs.85%29.aspx
编辑 3:
上面创建的包含 unicode ü 的文本文件不是 utf-8
Windows unicode 文件是 HEX:
FC 00 20 00 0D 00 0A 00
没有 BOM 的 UTF-8 将是 HEX:
C3 BC 20 0D 0A
链接到的 VBS 解决方案仅适用于 unicode 表单,但在 UTF-8 表单上失败。我需要将 UTF-8 转换为另一个代码页,所以即使那个似乎不适合我......