English 中文(简体)
有没有可以显示Unicode字符的Windows命令行壳程序?
原标题:
  • 时间:2008-12-18 20:56:46
  •  标签:

假设我已经安装了适当的字形并包含其中的符号,有没有一个Windows XP的命令行可以显示Unicode字符?至少,应该能够正确显示两个事情:

  • Directory listings. I don t care what I have to type (dir, ls, get-childitem, etc.), so long as files with Unicode characters in their names appear with the right glyphs, not the unprintable character box.
  • Text file content listings. Again, doesn t matter to me if it s less , more , cat , dog , etc., so long as the characters are printed. I recognize that this is more complicated because of character encoding of the file, so if I have to specify that on the command line that s fine with me.

这是我迄今为止尝试过的:

  • cmd.exe
  • Windows PowerShell; including the multilingual version.
  • Cygwin bash

没有运气。我甚至尝试安装适用于cmd / PowerShell的自定义字体。PowerShell和cmd.exe似乎在我可以将非可打印框复制/粘贴到其他应用程序中时支持Unicode,且该框将以正确的字符粘贴。 Cygwin (?)似乎会转换为?字符,然后通过复制/粘贴传递。

有什么想法吗?

最佳回答

这是PowerShell v1的一个重大问题。第2版带有一个“图形外壳程序”,可以解决这个问题,它实际上不是PowerShell的问题,而是Windows控制台主机的问题(Cmd.exe也使用)。如果您想要,您可以获得PowerShell v2的当前CTP。

实际上,PowerShell v2.0已经于八月初随Windows 7和Windows Server 2008 R2发布并发货。此外,反向移植版本(Windows Vista/2008)刚刚达到了RC里程碑;Windows XP/Windows Server 2003应该很快就会跟上。链接链接。

问题回答

要使用cmd.exe完成此操作,您需要使用控制台属性对话框切换到Unicode TrueType字体。

然后使用以下命令:

 CHCP 65001
 DIR > UTF8.TXT
 TYPE UTF8.TXT

命令:

  • Switch console to UTF-8 (65001)
  • Redirect output of DIR to UTF8.TXT
  • Dump UTF-8 to console

字符仍需由字体支持,才能在控制台上正确显示。

I18N:Windows命令提示符下的Unicode(C ++; .Net; Java)

将代码页设置为UTF-8使用命令“chcp 65001”应该可以帮助您正确打印文件内容到Shell(使用cmd.exe)。但是对于目录列表,这不适用(NTFS文件名使用UTF-16编码)。

尝试一下:

powershell.exe -NoExit /c "chcp.com 65001"

谁使用msysgit:

powershell.exe -NoExit /c "chcp.com 65001; sh --login -i"

不要忘记将窗口字体更改为支持UTF-8的TrueType字体(“Lucida Console”)

这是我在 Windows 7 Pro 英文版上运行的 cmd.exe 中获得中文输出的方法。我还尝试了带有日语、俄语和波兰语的文件名,它们似乎都能正确显示。输入也似乎可以工作,至少我尝试执行一个包含非ASCII字符的 dir xxx* 命令时没有出现问题。

  1. 安装console2,这是cmd.exe(和其他shell)的前端。

  2. 安装完成后,请遵循这些说明

    在注册表中删除键HKEY_CURRENT_USER\Console\Console2 command window

    将以下数据导入Windows注册表:

    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USERConsoleConsole2 command window] 
    "CodePage"=dword:000003a8 
    "FontSize"=dword:000a0000 
    "FontFamily"=dword:00000036 
    "FontWeight"=dword:00000190 
    "FaceName"="細明體" 
    "HistoryNoDup"=dword:00000000
    
  3. 你可能需要更改字体,也可能不需要。最初我将字体设置为@NimSum,中文字符输出时会旋转90度。然后我换成了NimSum(去掉@)就没有问题了。接着我又好奇地试了一下Consola,但我仍然可以看到中文字符。所以我不确定你是否真的需要设置字体。

对于一个真正的Shell,尝试PowerShell Plus。您可以选择Unicode字体并使用其他语言,不仅在编辑器中,在真正的控制台中也可以。

试试Console 2。不过,要小心颜色/调色板配置。它们有些问题。我已经证实它们不起作用,它们的表现像cmd.exe一样。

以管理员身份打开提升的命令提示符(运行cmd)。通过以下方式向控制台查询可用的TrueType字体的注册表:

REG query "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionConsoleTrueTypeFont"

你会看到一个类似的输出:

0    REG_SZ    Lucida Console
00    REG_SZ    Consolas
936    REG_SZ    *新宋体
932    REG_SZ    *MS ゴシック

现在,我们需要添加一个支持所需字符的TrueType字体(例如Courier New),我们通过向字符串名称添加零来实现,因此在这种情况下,下一个将是“000”:

REG ADD "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionConsoleTrueTypeFont" /v 000 /t REG_SZ /d "Courier New"

现在我们实现UTF-8支持:

REG ADD HKCUConsole /v CodePage /t REG_DWORD /d 65001 /f

将默认字体设置为“Courier New”:

REG ADD HKCUConsole /v FaceName /t REG_SZ /d "Courier New" /f

将字体大小设置为20:

REG ADD HKCUConsole /v FontSize /t REG_DWORD /d 20 /f

如果需要,启用快速编辑:

REG ADD HKCUConsole /v QuickEdit /t REG_DWORD /d 1 /f

As of November 2011, MinTTY is now Cygwin s default terminal emulator (installed by setup.exe). MinTTY is a fork of PuTTY s terminal emulator, and as such sports proper Unicode support and much-improved compatibility with other terminal emulators.

PowerShell V2 CTP3 inside Console2 seems to do that. The only downside is that the default console encoding is UCS-2 LE instead of UTF-8.

Also from UTF-16 on cmd.exe

    Open/run cmd.exe
    Click on the icon at the top-left corner
    Select properties
    Then "Font" bar
    Select "Lucida Console" and OK.
    Write Chcp 10000 at the prompt
    Finally dir /b




相关问题
热门标签