这有点与问题相关
在 Windows 7 上,dir 或 tree 无法显示 unicode 字符,即使使用 cmd /U 启动 cmd
即使在 Windows 7 上,我发现将 unicode 放入文件的唯一方法是
> cmd /U
> dir /B > files.txt
当我在记事本中打开并尝试“另存为”时,该文件将为“Unicode”;如果我dir /B > files.html
在 Firefox 中打开 HTML 文件,它可以使用 UTF-16(或 UTF-16 LE)编码显示。
但是,如果我想在屏幕上看到它而不是将其保存到文件中,这仍然是不可能的。 有办法实现吗? 可能以某种方式告诉 cmd 不要将不可打印字符显示为“?”
更新:我尝试了 cmd.exe、windows 上的 cygwin 的 bash 和 PowerShell。它们是一样的。除非我将“属性 -> 字体”更改为 Consolas 或 Lucida Console,否则会有一些改进 - 现在它不是问号,而是方形边框或带有问号的正方形。
更昂贵的 Mac 电脑(装有 Mac OS X)可以做到这一点。免费的 Ubuntu 也可以做到这一点。
答案1
这是一个很老的问题,但是这里给出的所有答案都是错误的。
你永远不会在 Windows 命令行 (CMD.exe) 上看到 Unicode 输出。原因是CMD 无法显示 Unicode。 但是它可以显示双链式碳氢化合物(双字节字符集)。
例如,如果你想查看日语输出,你必须将您的系统区域设置更改为日语然后重新启动。然后,您将能够在命令行上看到日语 DBCS(即 Shift-JIS)字符。Windows 支持日语 Shift-JIS、简体中文、韩语和繁体中文“Big5”DBCS 代码页。
顺便说一句,您可以将 UTF-16(Microsoft 错误地将其与“Unicode”互换使用)传输到文件,然后在记事本等中打开该文件,并查看 Unicode 字符。您还可以从 CMD.exe 中标记并复制乱码文本,然后将其粘贴到记事本中,然后查看 Unicode 字符。换句话说,CMD 支持 Unicode,但不支持展示统一码。
您可以找到更多信息在这篇博文中。
答案2
根据您的用户名,我怀疑您主要从事亚洲语言工作。
Windows 工具在 unicode 模式下正常运行(正如您通过将输出通过管道传输dir
到文件中并使用编辑器打开该文件所看到的那样):
- 该工具可完成其工作
- 它输出 unicode 字符
- 另一个程序接收此输出并且必须显示它。
要在屏幕上显示任何字符,步骤 3 中的程序必须查找适合给定字节序列的字形。例如:
0x65 'a' 在每种字体中映射到不同的字形(因此 'a' 在不同的字体中看起来不同)
0x937 'Ω'(希腊语 'omega')在每种字体中也映射到不同的字形
此映射仅当字体具有给定字节序列的字形时才有效。否则视觉效果会有所不同,有时会看到“?”,有时会看到菱形等。
再次:dir
生成字节序列,有时纯粹在 ASCII 范围内,有时在 unicode 范围内(取决于它找到的文件名)。它将这些序列发送到负责实际呈现字节序列的另一个程序。为了能够显示这些序列,该程序必须将序列映射到字形。为此,它必须在字体中搜索字形。如果字体没有给定序列的字形,则程序无法显示由例如生成的字节序列dir
。
因此,解决您的问题(在 Windows 的“控制台/终端”中看到任何 unicode 字符)的方法是:为程序使用一种字体,该字体包含(几乎)任何给定 unicode 字节序列的(几乎)所有字形。
答案3
https://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how
使用将chcp 65001
代码页更改为 UTF8 并使用 Lucida 控制台。
答案4
好的,这是一个使用 PowerShell 的解决方案:
1)单击Start
Windows 7 上的按钮
2)现在,在空白行中输入PowerShell
3)选择PowerShell ISE
<-- 注意ISE
现在,如果您这样做ls
,您将能够看到unicode字符......
4)如果您也使用chcp 65001
,那么如果您的程序打印出UTF-8字符,它们也会很好地显示。
您还可以ls > list.txt
,然后type list.txt
内容也会以 Unicode 字符显示。
tree
仍然不会显示unicode字符。
此外,在 PowerShell ISE 内部cmd /U /C dir /B
也不起作用。
ls -R
将要。