是否有Windows命令shell将显示Unicode字符?

时间:2008-12-18 20:56:47

标签: unicode powershell

假设我安装了具有相应字形的字体,是否有一个用于Windows XP的命令shell会显示Unicode字符?至少应该有两件事应该正确显示Unicode:

  • 目录列表。我不关心我必须键入什么(dir,ls,get-childitem等),只要名称中带有Unicode字符的文件带有正确的字形,而不是不可打印的字符框。
  • 文本文件内容列表。同样,只要字符被打印,对我来说无关紧要的是“少”,“更多”,“猫”,“狗”等。我认识到这是因为文件的字符编码更复杂,所以如果我必须在命令行上指定那个对我没问题。

这是我到目前为止所尝试的内容:

  • cmd.exe的
  • Windows PowerShell;包括多语言版本。
  • Cygwin bash

没有运气。我甚至试过安装custom fonts for cmd/PowerShell。 PowerShell和cmd.exe似乎是Unicode感知的,因为我可以将不可打印的框复制/粘贴到那里,它将粘贴到具有正确字符的其他应用程序中。 Cygwin(?)似乎转换为?字符和复制/粘贴中的字符。

有什么想法吗?

12 个答案:

答案 0 :(得分:40)

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

然后使用以下命令:

 CHCP 65001
 DIR > UTF8.TXT
 TYPE UTF8.TXT

命令:

  • 将控制台切换为UTF-8(65001)
  • 将DIR的输出重定向到 UTF8.TXT
  • 将UTF-8转储到控制台

字体仍然需要字体支持才能在控制台上正确显示。

I18N: Unicode at the Windows command prompt (C++; .Net; Java)

答案 1 :(得分:18)

这是PowerShell v1中的一个主要问题。版本2附带了一个“图形shell”,可以解决问题,最终不是PowerShell,而是Windows控制台主机(Cmd.exe也使用)。如果需要,您可以获取PowerShell v2的当前CTP。

实际上,PowerShell v2.0已于8月初完成并随Windows 7和Windows Server 2008 R2一起发布。此外,后移版本(Windows Vista / 2008)在前几天达到了候选版本里程碑; Windows XP / Windows Server 2003应该很快就会出现。 Linky linky

答案 2 :(得分:6)

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

答案 3 :(得分:5)

试试这个:

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

谁使用msysgit:

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

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

答案 4 :(得分:2)

要获得真正的shell,请尝试使用PowerShell Plus。您可以选择Unicode字体并使用其他语言,不仅可以在编辑器中使用,还可以在真正的控制台中使用。

答案 5 :(得分:2)

这是我在Windows 7 Pro英文版上运行cmd.exe的中文输出的方法。我还尝试使用日语,俄语和波兰语的文件名,它们似乎都正确显示。输入似乎也有效,至少当我尝试使用包含非ascii字符的dir xxx*时。

  1. 安装console2,这是cmd.exe(及其他炮弹)的前端

  2. 安装完成后,请按these instructions

    删除注册表中的密钥HKEY_CURRENT_USER\Console\Console2 command window

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

    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Console\Console2 command window] 
    "CodePage"=dword:000003a8 
    "FontSize"=dword:000a0000 
    "FontFamily"=dword:00000036 
    "FontWeight"=dword:00000190 
    "FaceName"="細明體" 
    "HistoryNoDup"=dword:00000000
    
  3. 您可能需要也可能不需要更改字体。最初我将字体设置为@NimSum,中文字符旋转90度。然后我切换到NimSum(没有@),它正确地出来了。然后出于好奇我切换到Consola然后我仍然可以看到汉字。所以我不确定你是否真的要设置字体。

答案 6 :(得分:1)

试试Console 2。但要注意颜色/调色板配置。那些有点儿马车。我确认他们不工作;它们的行为类似于cmd.exe。

答案 7 :(得分:0)

PowerShell V2 CTP3内的

Console2似乎就是这么做的。唯一的缺点是默认的控制台编码是UCS-2 LE而不是UTF-8。

答案 8 :(得分:0)

November 2011开始,MinTTY现在是Cygwin的默认终端模拟器(由setup.exe安装)。 MinTTY是PuTTY终端仿真器的一个分支,因此可以运行适当的Unicode支持,并且与其他终端仿真器的兼容性大大提高。

答案 9 :(得分:0)

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

REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont"

您会看到如下输出:

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

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

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" /v 000 /t REG_SZ /d "Courier New"

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

REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f

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

REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Courier New" /f

将字体大小设置为20:

REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f

如果您愿意,可以启用快速编辑:

REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f

答案 10 :(得分:-1)

也来自 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

答案 11 :(得分:-3)

快速便捷的方法是在资源管理器上。

    1. Open the Explorer window.
    2. Traverse to the top level of directory where you want to find.
    3. On the upper right corner, there is a find field.