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

是否有显示Unicode字符的Windows命令shell?,unicode,powershell,Unicode,Powershell,假设我安装的字体中有适当的标志符号,是否有用于Windows XP的命令shell可以显示Unicode字符?至少有两件事应该正确显示Unicode: 目录列表。我不在乎我必须键入什么(dir、ls、get childitem等),只要名称中包含Unicode字符的文件以正确的字形显示,而不是不可打印的字符框 文本文件内容列表。再说一遍,如果是‘少’、‘多’、‘猫’、‘狗’等等,对我来说都无所谓,只要字符是打印出来的。我认识到,由于文件的字符编码,这更为复杂,因此如果必须在命令行中指定,我也可

假设我安装的字体中有适当的标志符号,是否有用于Windows XP的命令shell可以显示Unicode字符?至少有两件事应该正确显示Unicode:

  • 目录列表。我不在乎我必须键入什么(dir、ls、get childitem等),只要名称中包含Unicode字符的文件以正确的字形显示,而不是不可打印的字符框
  • 文本文件内容列表。再说一遍,如果是‘少’、‘多’、‘猫’、‘狗’等等,对我来说都无所谓,只要字符是打印出来的。我认识到,由于文件的字符编码,这更为复杂,因此如果必须在命令行中指定,我也可以这样做
以下是我迄今为止所尝试的:

  • cmd.exe
  • Windows PowerShell;包括多语言版本
  • 赛文·巴什
不走运。我甚至试过安装。PowerShell和cmd.exe似乎知道Unicode,因为我可以从中复制/粘贴不可打印的框,并将其粘贴到具有正确字符的其他应用程序中。Cygwin(?)似乎转变为?字符,并在复制/粘贴中通过


有什么想法吗?

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


事实上,PowerShell v2.0已于8月初在Windows 7和Windows Server 2008 R2发布时完成并发布。此外,后端口版本(WindowsVista/2008)在前几天刚刚达到其发布候选里程碑;WindowsXP/WindowsServer2003应该很快就会出现

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

试试。但要注意颜色/调色板配置。那些车有点乱。我已确认它们不起作用;它们的行为类似于cmd.exe。

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

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

然后使用以下命令:

 CHCP 65001
 DIR > UTF8.TXT
 TYPE UTF8.TXT
命令:

  • 切换控制台至UTF-8(65001)
  • 将DIR的输出重定向到UTF8.TXT
  • 将UTF-8转储到控制台
字体仍需要支持字符才能在控制台上正确显示


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

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

  • Install,它是
    cmd.exe
    (和其他shell)的前端

  • 安装后,请按照

    删除注册表中的注册表项HKEY\U CURRENT\U USER\Console\Console2命令窗口

    将以下数据导入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
    
  • 您可能需要也可能不需要更改字体。最初,我将字体设置为
    @NimSum
    ,汉字旋转90度。然后我切换到
    NimSum
    (不带@),结果显示正确。然后出于好奇,我切换到了控制台,但我仍然能看到汉字。所以我不确定你是否真的需要设置字体

  • 截至,MinTTY现在是Cygwin的默认终端仿真器(由
    setup.exe安装)。MinTTY是PuTTY终端仿真器的一个分支,因此具有适当的Unicode支持,并且与其他终端仿真器的兼容性大大提高。

    尝试以下方法:

    powershell.exe -NoExit /c "chcp.com 65001"
    
    谁使用msysgit:

    powershell.exe -NoExit /c "chcp.com 65001; sh --login -i"
    
    不要忘记将窗口的字体更改为具有UTF-8支持的TrueType字体(“Lucida控制台”)

    也可以从


    打开提升的命令提示符(以管理员身份运行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 ゴシック
    
    现在我们需要添加一个TrueType字体,它支持您需要的字符,比如Courier New,我们通过在字符串名称中添加零来实现这一点,因此在本例中,下一个将是“000”:

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

    REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f
    
    将默认字体设置为“Courier New”:

    将字体大小设置为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
    

    一种快速方便的方法是使用Explorer

    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. 1.打开资源管理器窗口。 2.遍历到要查找的目录的顶层。 3.在右上角,有一个find字段。
    投票赞成为这个问题提出有效的解决办法。我会接受的,除非我对更好的东西抱有希望。作为“早期阿尔法”,它要成为一个真正可用的外壳还有很长的路要走。目前的CTP3非常稳定,不幸的是,它是目前唯一一个不需要花钱的解决方案。由于这个老话题最近被推到了列表的最顶端,我用指向最新Powershell位的链接编辑了主要答案。我不明白。这个“图形外壳”在哪里?我使用的是Windows 8.1,调用Powershell似乎仍然使用1252代码页(在我的en-US笔记本电脑上)。Powershell ISE似乎是一个图形shell。它会弹出带有补全等内容的弹出窗口。根据你的建议,我试过了,但似乎没有解决我的问题。在一个目录中运行'dir',其中的文件名包括韩文字符
    REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f
    
    REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f
    
    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.