在Windows批处理中回显UTF-8字符

时间:2012-08-14 23:14:55

标签: windows batch-file

我可以使用echo生成UTF-8文本文件吗? 例如,如果我想生成一个包含字符“ę”

的文件
echo "abcd ę" > out.txt

(批处理文件使用UTF-8编码)

结果是ANSI编码文件,“ę”字符转换为“ê”。 如何说服“echo”生成UTF-8文件?

如果不可能,那么创建后可以更改文本文件的编码吗? gnuwin32包中是否有可以帮助我更改编码的工具?

感谢

5 个答案:

答案 0 :(得分:27)

使用chcp命令将活动代码页更改为utf-8的65001。

chcp 65001

答案 1 :(得分:8)

尝试使用/ U开关启动CMD.exe:它会导致所有管道输出为Unicode而不是ANSI。

答案 2 :(得分:3)

  

chcp 65001

正如@cuixiping所说,这是一个很好的答案,但它需要将cmd默认字体更改为 Lucida Console ,例如,您可以在此处阅读: https://superuser.com/questions/237081/whats-the-code-page-of-utf-8#272184

当然,正如@BearCode所提到的,文本应该是utf-8 ...在我的情况下,Vim在GNU / Linux下可以远程访问,但记事本++也是正确的方法!

答案 3 :(得分:2)

问题是该文件包含以下行:

<META content="text/html; charset=iso-8859-2" http-equiv=Content-Type> 

然后Notepad2和Firefox正在改变字符集,显示Ä而不是ę。在普通的记事本中,该文件看起来不错。 解决方案是在文件的开头添加UTF-8签名(字节顺序标记):

echo1 -ne \xEF\xBB\xBF > out.htm

(echo1来自gnuwin32)

感谢答案

答案 4 :(得分:0)

出现并更改代码页,您需要在第一次回显到文件时至少写入一个unicode字符,以将文件另存为unicode。 因此,您的批处理文件本身需要以Unicode格式(如UTF-8)存储。