2008-12-18 38 views
48

假設我已經安裝了字體,其中有適當的字形,是否有Windows XP的命令外殼將顯示Unicode字符?至少,應該正確顯示Unicode的兩件事:是否有顯示Unicode字符的Windows命令shell?

  • 目錄列表。我不在乎我必須輸入什麼(dir,ls,get-childitem等),只要其名稱中帶有Unicode字符的文件顯示爲帶有正確的字形,而不是不可打印的字符框。
  • 文本文件內容列表。再說一遍,只要字符被打印出來,它對'我'來說無關緊要,就是'更少','更多','貓','狗'等等。我認識到這是因爲文件的字符編碼而變得更加複雜,所以如果我必須在命令行中指定,那對我來說很好。

這裏是我試過到目前爲止:

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

沒有運氣。我甚至嘗試安裝custom fonts for cmd/PowerShell。 PowerShell和cmd.exe似乎是Unicode感知的,因爲我可以將不可打印的框複製/粘貼出去,並將其粘貼到具有正確字符的其他應用程序中。 Cygwin(?)似乎轉換爲?字符,並通過複製/粘貼。

任何想法?

回答

18

這是PowerShell v1中的一個主要問題。版本2附帶一個「圖形化外殼」,用於糾正問題,最終不是用PowerShell,而是用Windows控制檯主機(該Cmd.exe也使用該主機)。如果需要,您可以獲取PowerShell v2的當前CTP。

實際上,PowerShell v2.0已於8月初定稿並隨Windows 7和Windows Server 2008 R2的發佈提供。另外,backported版本(Windows   Vista/2008)在前一天達到了Release Candidate里程碑; Windows   XP/Windows Server 2003應該很快就會出現。 Linky linky

+1

Upvoted提出瞭解決問題的工作方案。我會接受它,除了我希望有更好的東西。作爲「早期阿爾法」,要成爲一個真正可用的殼體還有很長的路要走。 – 2008-12-18 21:44:10

+1

現在的CTP3非常穩定,不幸的是,這些日子裏唯一的解決方案就是不需要付錢。 – 2008-12-30 14:58:39

+0

由於這個老話題最近碰到了名單的頂部,我編輯了主要答案,並鏈接到了最新的Powershell比特。 – 2009-09-19 04:14:01

2

對於真正的shell,請嘗試使用PowerShell Plus。您可以選擇Unicode字體並使用其他語言,不僅在編輯器中,而且在真正的控制檯中。

0

嘗試Console 2。儘管如此,請注意顏色/調色板配置。那些有點兒車。我已確認他們不工作;它們的行爲與cmd.exe類似。

+1

根據你的建議,我試了一下,似乎並沒有解決我的問題。在名稱包含韓文字符的文件的目錄中運行'dir'會導致?'s。這種行爲與cmd.exe相同。 – 2009-01-08 21:21:31

6

使用命令「chcp 65001」將代碼頁設置爲UTF-8應該有助於將文件內容正確地打印到shell(使用cmd.exe)。這對於目錄列表來說不起作用(NTFS文件名中的UTF-16編碼)。

39

要做到這一點與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)

2

這就是我如何在Windows 7 Pro英文版上運行cmd.exe中文輸出。我也嘗試過使用日文,俄文和波蘭文的文件名,它們似乎都能正確顯示。輸入也似乎工作,至少當我試圖做一個dir xxx*包含非ascii字符。

  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,但我仍然可以看到中文字。所以我不確定你是否真的需要設置字體。

0

作爲November 2011,MinTTY現在是Cygwin的默認終端仿真器(由setup.exe安裝)。 MinTTY是PuTTY的終端仿真器的一個分支,因此支持Unicode,並且與其他終端仿真器的兼容性大大提高。

5

試試這個:

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

誰在使用msysgit:

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

不要忘記改變窗口的字體以TrueType字體使用UTF-8支持( 「龍力控制檯」)

-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 
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 ゴシック 

現在,我們需要添加支持你需要像瑞爾字符的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 

設置默認字體爲 「宋體」:

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 
-2

一快速便捷的方式就是在資源管理器上。

 
    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. 
相關問題