non*_*ity 5 windows windows-7 unicode command-line
这与问题有些相关
在 Windows 7 上,dir 或 tree 无法显示 unicode 字符,即使以 cmd /U 启动 cmd
即使在 Windows 7 上,我发现让 unicode 进入文件的唯一方法是通过
> cmd /U
> dir /B > files.txt
Run Code Online (Sandbox Code Playgroud)
当我在记事本中打开并尝试“另存为”时,该文件将采用“Unicode”格式,如果我dir /B > files.html在 firefox 中打开 HTML 文件,它可以使用 UTF-16(或 UTF-16 LE)编码显示。
但是,如果我想在屏幕上看到它而不是让它转到文件,那仍然是不可能的。有没有办法让它发生?可能以某种方式告诉 cmd 不要将不可打印的字符显示为“?”
更新:我在 Windows 上尝试了 cmd.exe、cygwin 的 bash 和 PowerShell。他们是一样的。除非我将“属性 - > 字体”更改为 Consolas 或 Lucida Console,否则会有一些改进——现在它不是问号,而是方形边框或带有问号的方形。
带有 Mac OS X 的更昂贵的 Mac 计算机可以做到。免费的 Ubuntu 也可以做到。
小智 5
这是一个非常古老的问题,但这里给出的所有答案都是错误的。
您永远不会在 Windows 命令行 (CMD.exe) 上看到 Unicode 输出。原因是CMD 无法显示 Unicode。 但是,它可以显示DBCS(双字节字符集)。
例如,如果您想查看日语输出,则必须将系统区域设置更改为日语并重新启动。然后,您将能够在命令行上看到日语 DBCS(即 Shift-JIS)字符。Windows 支持日语 Shift-JIS、简体中文、韩语和繁体中文“Big5”DBCS 代码页。
顺便说一句,您可以将 UTF-16(不准确地与 Microsoft 的“Unicode”互换使用)通过管道传输到文件,然后在例如记事本中打开该文件,并查看 Unicode 字符。您还可以从 CMD.exe 标记和复制乱码文本并将其粘贴到记事本中并查看 Unicode 字符。换句话说,CMD 支持 Unicode,但它不显示Unicode。
您可以在此博客文章中找到更多信息。
根据您的用户名,我怀疑您主要使用亚洲语言。
Windows 工具通常在 unicode 模式下运行(正如您通过将 的输出传输dir到文件并使用编辑器打开该文件所看到的那样):
要在屏幕上显示任何字符,步骤 3 中的程序必须查找适合给定字节序列的字形。例子:
0x65 'a' 映射到每种字体中的不同字形(因此 'a' 看起来因字体而异)
0x937 'Ω'(希腊语'omega')也映射到每种字体中的不同字形
仅当字体具有给定字节序列的字形时,此映射才有效。否则视觉结果会有所不同,有时您会看到“?”,有时会看到钻石等。
再次:dir生成字节序列,有时纯粹在 ASCII 范围内,有时在 unicode 范围内(取决于它找到的文件名)。它将这些序列发送到另一个负责实际渲染字节序列的程序。为了能够显示这些序列,该程序必须将序列映射到字形。为此,它必须在字体中搜索字形。如果字体没有给定序列的字形,则程序无法显示由例如 生成的字节序列dir。
因此,问题的解决方案(在 Windows 的“控制台/终端”中看到任何 unicode 字符)是:为程序使用一种字体,该字体具有(几乎)任何给定 unicode 字节序列的(几乎)每个字形。
| 归档时间: |
|
| 查看次数: |
5579 次 |
| 最近记录: |