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

mrphzbgm  于 2023-01-14  发布在  Windows
关注(0)|答案(6)|浏览(270)

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

echo "abcd ę" > out.txt

(the批处理文件使用UTF-8编码)
结果是一个ANSI编码文件,ę字符被转换为ê。如何说服echo生成UTF-8文件?
如果不可能,那么我可以在创建文本文件后更改它的编码吗?gnuwin 32包中有什么工具可以帮助我更改编码吗?
谢谢

g9icjywg

g9icjywg1#

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

chcp 65001
ozxc1zmp

ozxc1zmp2#

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

lnxxn5zx

lnxxn5zx3#

中国药典65001
正如@cuixiping所提到,这是一个很好的答案,但它需要将cmd默认字体更改为 Lucida Console,例如,您可以在此处看到:https://superuser.com/questions/237081/whats-the-code-page-of-utf-8#272184
当然,正如@BearCode所提到的,文本应该是UTF-8格式的...在我的情况下,使用GNU/Linux下的Vim进行远程访问,但是记事本++也是正确的!

kpbwa7wx

kpbwa7wx4#

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

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

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

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

(回声1来自gnuwin 32)
谢谢你的回答

jhdbpxl9

jhdbpxl95#

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

polkgigr

polkgigr6#

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" ?^>

相关问题