31

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

echo "abcd ę" > out.txt

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

结果是一个 ANSI 编码的文件,ę字符被转换为ê. 如何说服echo生成 UTF-8 文件?

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

谢谢

4

5 回答 5

51

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

chcp 65001
于 2015-08-02T09:18:38.007 回答
10

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

于 2012-08-14T23:28:55.567 回答
4

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 可以远程访问,但记事本 ++ 也是正确的方式!

于 2017-11-22T15:29:10.567 回答
3

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

<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)

感谢您的回答

于 2012-08-17T05:07:39.313 回答
0

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

于 2019-03-26T23:09:02.783 回答