即使在 Windows 7 上,您也可以执行“dir”并能够看到包含 Unicode 字符的文件名吗?

即使在 Windows 7 上,您也可以执行“dir”并能够看到包含 Unicode 字符的文件名吗?

这有点与问题相关

在 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到文件中并使用编辑器打开该文件所看到的那样):

  1. 该工具可完成其工作
  2. 它输出 unicode 字符
  3. 另一个程序接收此输出并且必须显示它。

要在屏幕上显示任何字符,步骤 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)单击StartWindows 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将要。

相关内容