cmd.exe 中的 UTF-16 文件输出

cmd.exe 中的 UTF-16 文件输出
chcp 10000
echo hell☺ w☻rld♥! >> "UTF-16 file☺☻♥♦♣♠"

好的,它创建了正确的文件,但内容中有问号而不是 unicode 字符。如何修复?

答案1

您的代码不正确,因为 10000 不是 Unicode 代码页。请参阅代码页标识符

10000   macintosh   MAC Roman; Western European (Mac)
...
1200    utf-16      Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications
1201    unicodeFFFE Unicode UTF-16, big endian byte order; available only to managed applications
...
12000   utf-32      Unicode UTF-32, little endian byte order; available only to managed applications
12001   utf-32BE    Unicode UTF-32, big endian byte order; available only to managed applications
...
65000   utf-7       Unicode (UTF-7)
65001   utf-8       Unicode (UTF-8)

我不知道为什么,但是命令提示符在粘贴时似乎将它们解释为控制字符,特别是 SOH(标题开始,01)、STX(文本开始,02)和 ETX(文本结束,03)。

从好的方面来看,PowerShell 似乎可以正确处理这个问题。Notepad++ 自动将生成的文本文件打开为“UCS-2 Little Endian”,并显示正确的字符。


好的,我明白了为什么 UTF-8 对我来说不起作用。字体应设置为 Lucida Console,因为默认的 Raster Fonts 不支持 Unicode。

答案2

65001.txt和都1200.txt包含相同的字符串:абв™但采用不同的编码。命令:

chcp 65001 & type 65001.txt 

成功更改代码页,但显示乱码。

命令:

type 1200.txt

显示正确的字符,但命令

for /f %A in ('type 1200.txt') do echo %A

显示абвT

因此,cmd.exe 能够使用代码页 1200(有一些限制),而使用代码页 65001 我无法获得任何令人满意的结果。

相关内容