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

Bea*_*ode 22 windows batch-file

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

echo "abcd ?" > out.txt
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢

cui*_*ing 33

chcp对于utf-8,使用命令将活动代码页更改为65001.

chcp 65001
Run Code Online (Sandbox Code Playgroud)


小智 9

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


bca*_*ag2 5

\n

chcp 65001

\n
\n\n

@cuixiping 提到的是一个很好的答案,但它需要将 cmd 默认字体更改为Lucida\xc2\xa0Console例如,您可以在此处阅读:\n https://superuser.com/questions/237081/whats-the- utf-8 代码页#272184

\n\n

当然,正如 @BearCode 所提到的,在我的例子中,文本应该是 utf-8\xe2\x80\xa6 ,在 GNU/Linux 下使用 Vim 进行远程访问,但 notepad++ 也是正确的方式!

\n


Bea*_*ode 3

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

\n\n
<META content="text/html; charset=iso-8859-2" http-equiv=Content-Type> \n
Run Code Online (Sandbox Code Playgroud)\n\n

然后 Notepad2 和 Firefox 更改了字符集,显示 \xc3\x84 而不是 \xc4\x99。在普通记事本中,该文件看起来没问题。\n解决方案是在文件开头添加 UTF-8 签名(字节顺序标记):

\n\n
echo1 -ne \\xEF\\xBB\\xBF > out.htm\n
Run Code Online (Sandbox Code Playgroud)\n\n

(echo1 来自 gnuwin32)

\n\n

谢谢你的回答

\n

  • 从技术上讲,这是一个无效文件。如果添加字节顺序标记(这是执行此操作的好方法),则应将字符集更改为“charset=utf-8”。 (2认同)