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

假设我已经安装了字体,其中有适当的字形,是否有Windows XP的命令shell,将显示Unicode字符? 至less,应该正确显示Unicode的两件事:

  • 目录列表。 我不在乎要input什么(dir,ls,get-childitem等),只要名称中带有Unicode字符的文件显示为正确的字形,而不是不可打印的字符框。
  • 文本文件内容列表。 再次,只要字符被打印,对于我来说,如果它是“less”,“更多”,“猫”,“狗”等,并不重要。 我认识到,由于文件的字符编码,这是更复杂的,所以如果我必须在命令行中指定,那对我来说很好。

以下是我迄今为止所尝试的:

  • CMD.EXE
  • Windows PowerShell; 包括多语言版本。
  • Cygwin bash

没有运气。 我甚至尝试安装cmd / PowerShell的自定义字体 。 PowerShell和cmd.exe似乎是Unicode的意识,我可以复制/粘贴不可打印的盒子,它会粘贴到其他应用程序与正确的字符。 Cygwin(?)似乎转换为? 字符,并通过复制/粘贴。

有任何想法吗?

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

事实上,PowerShell v2.0已经在8月初发布了Windows 7和Windows Server 2008 R2。 另外,后端版本(Windows Vista / 2008)也是在前一天达到了Release Candidate的里程碑; Windows XP / Windows Server 2003应该很快就会closures。 Linky链接 。

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

然后使用这些命令:

CHCP 65001 DIR > UTF8.TXT TYPE UTF8.TXT 

命令:

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

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

I18N:在Windows命令提示符处使用Unicode(C ++; .Net; Java)

使用命令“chcp 65001”将代码页设置为UTF-8将有助于将文件内容正确地打印到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专业英文版上运行的cmd.exe 。 我也尝试用日文,俄文和波兰文件名,他们似乎都正确显示。 input也似乎工作,至less当我试图做一个dir xxx*包含非ascii字符。

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

  2. 安装后,请按照这些说明

    删除HKEY_CURRENT_USER\Console\Console2 command window

    将以下数据导入到Windowsregistry中:

     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 ,但我仍然可以看到汉字。 所以我不确定你是否真的需要设置字体。

对于真正的shell,请尝试PowerShell Plus。 您可以selectUnicode字体并使用其他语言,不仅在编辑器中,而且在真正的控制台中。

Console2里面的PowerShell V2 CTP3似乎是这样做的。 唯一的缺点是默认的控制台编码是UCS-2 LE而不是UTF-8。

截至2011年11月 ,MinTTY现在是Cygwin的默认terminal模拟器(由setup.exe )。 MinTTY是PuTTYterminal仿真程序的一个分支,因此支持Unicode,并且与其他terminal仿真程序的兼容性大大提高。

尝试控制台2 。 不过要注意颜色/调色板的configuration。 那些有点儿车。 我已经证实他们不工作; 他们的行为像cmd.exe。

打开提升的命令提示符(以pipe理员身份运行cmd)。 通过以下方式在registry中查询可用的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,我们通过在string名称中加零来实现,所以在这种情况下,下一个是“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 

另外从cmd.exe上的UTF-16

  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 

一个快捷方便的方法是在资源pipe理器上。

     1.打开资源pipe理器窗口。
     2.遍历您要查找的目录的顶层。
     3.在右上angular有一个查找字段。