我可以使用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
命令将活动代码页更改为65001,以支持utf-8。
chcp 65001
尝试使用/U开关启动CMD.exe:它会将所有管道输出转换为Unicode而不是ANSI。
如@cuixiping所提到的,这是一个好的答案,但需要将cmd默认字体更改为Lucida Console,例如,您可以在此处阅读: https://superuser.com/questions/237081/whats-the-code-page-of-utf-8#272184 当然,正如@BearCode所提到的,文本应该是utf-8……在我的情况下,使用GNU/Linux下的Vim进行远程访问,但notepad++也是正确的方法!chcp 65001
<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)
感谢提供的答案
在更改代码页的同时,您需要在第一个输出到文件中的echo中至少写入一个unicode字符,以便文件保存为unicode格式。 因此,您的批处理文件本身需要以UTF-8这样的unicode格式存储。
I'm not sure if this is the answer you are looking for or if it's already been answered for you...
I'd use the catet character ( ^ ) in a batch file and output to a file using escape character ^. See examples..
Desired output...
<META content="text/html; charset=iso-8859-2" http-equiv=Content-Type>
Replace code with this:
Example 1: echo ^<META content="text/html; charset=iso-8859-2" http-equiv=Content-Type^>
Example 2: echo ^<?xml version="1.0" encoding="utf-8" ?^>