我可以使用 echo 生成 UTF-8 文本文件吗?例如,如果我想生成一个包含字符的文件ę
:
echo "abcd ę" > out.txt
(批处理文件使用 UTF-8 编码)
结果是一个 ANSI 编码的文件,ę
字符被转换为ê
. 如何说服echo
生成 UTF-8 文件?
如果不可能,那么我可以在创建文本文件后更改它的编码吗?gnuwin32 包中是否有任何工具可以帮助我更改编码?
谢谢
我可以使用 echo 生成 UTF-8 文本文件吗?例如,如果我想生成一个包含字符的文件ę
:
echo "abcd ę" > out.txt
(批处理文件使用 UTF-8 编码)
结果是一个 ANSI 编码的文件,ę
字符被转换为ê
. 如何说服echo
生成 UTF-8 文件?
如果不可能,那么我可以在创建文本文件后更改它的编码吗?gnuwin32 包中是否有任何工具可以帮助我更改编码?
谢谢
使用chcp
命令将活动代码页更改为 utf-8 的 65001。
chcp 65001
尝试使用 /U 开关启动 CMD.exe:它会导致所有管道输出为 Unicode 而不是 ANSI。
chcp 65001
正如@cuixiping 提到的那样是一个很好的答案,但它需要将 cmd 默认字体更改为Lucida Console,例如,您可以在此处阅读: https ://superuser.com/questions/237081/whats-the-code-page-of -utf-8#272184
当然,正如@BearCode 所提到的,文本应该是 utf-8 ......在我的例子中,在 GNU/Linux 下使用 Vim 可以远程访问,但记事本 ++ 也是正确的方式!
问题是该文件包含以下行:
<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)
感谢您的回答
出现以及更改代码页时,您需要在第一次回显到文件中写入至少一个 unicode 字符,以便将文件另存为 unicode。因此,您的批处理文件本身需要以 UTF-8 等 unicode 格式存储。