2013-01-01 62 views
52

默認情況下在Windows'cmd.exe中安裝的866字符集與光榮的Unicode相比較差且不方便。默認情況下如何在cmd.exe中製作Unicode字符集?

默認情況下,我可以安裝Unicode還是將cmd.exe替換爲另一個控制檯並使其成爲默認值,以便程序使用它而不是cmd.exe?

據我所知,chcp 65001只在運行控制檯中進行編碼更改。我想在系統級別更改字符集。

+2

866是西里爾文腳本的代碼頁。改變它很容易打破任何舊的控制檯模式程序,期望該頁面是默認的。這不是你不會注意到的,你不能再讀取程序的輸出。 –

+2

在cmd.exe中沒有Unicode字符集。 'chcp 65001'提供了一些UTF-8解碼,但它非常基本,並且不提供正確的輸入。 –

回答

38

我試圖布拉的解決方案後,我的Windows墜毀(Win 7的專業版64位),所以我決定嘗試不同的解決方案:

  1. 開始Run(WIN + R)
  2. 類型cmd /K chcp 65001

你會得到你想要的。要從任務欄或其他任何地方啓動它,請創建一個快捷方式(您可以將其命名爲cmd.unicode.exe或任何您喜歡的)並將其Target更改爲C:\Windows\System32\cmd.exe /K chcp 65001

+0

你的意思是「cmd.unicode.bat」而不是「..exe」,對吧?如果真的這樣做,我怎樣才能讓exe文件贏得Win10? – Martin

+0

是否可以在批處理文件中自動添加該命令?我的意思是像這樣'START cmd/K chcp 65001 STARTDTRé.xls' –

+1

對於代碼頁65001,Windows 7中的控制檯(不是Windows 8+)錯誤地返回了寫入UTF-8的已解碼寬字符代碼點數,而不是寫入它的字節數,WriteFile被假定返回。這會導致應用程序重試寫入他們錯誤地確定的字節字符串的剩餘部分,直到控制檯返回所有'字節'(實際解碼的寬字符)已被寫入。在每個包含非ASCII字符的打印後,結果看起來像是一串垃圾字符。 – eryksun

6

保存下列與「.reg的」後綴的文件:

Windows Registry Editor Version 5.00 

[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe] 
"CodePage"=dword:0000fde9 

雙擊此文件,註冊表編輯器將其導入。

它基本上將密鑰HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage設置爲0xfde9(十進制中的65001)。

+4

請詳細解釋這是什麼意思。你如何設定鑰匙? OP可能不知道註冊表。解釋一下。同時解釋fde9(65001)代碼。謝謝。 –

+2

這適用於Windows 10 x64 –

+0

爲什麼不保存在'Console \ Command Prompt'中? – Chinggis6

16

.reg文件

Windows Registry Editor Version 5.00 
[HKEY_CURRENT_USER\Console] 
"CodePage"=dword:fde9 

命令提示符

REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 0xfde9 

PowerShell的

sp -t d HKCU:\Console CodePage 0xfde9 

Cygwin的

regtool set /user/Console/CodePage 0xfde9 
+3

顯示如何使用單行設置值的榮譽。請注意,它們都支持* decimal *輸入,因此您可以直接使用65001。 – mklement0

12

打開提升的命令提示符(以管理員身份運行cmd)。 查詢您的可用TT字體到控制檯註冊表:

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

現在,我們需要添加支持,你需要像字符的字體TT宋體,我們這樣做是通過添加零字符串名稱,所以在這種情況下,下一個將是「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 
+0

減1:UTF-8僅在控制檯窗口中部分受支持,並且僅用於輸出。 –

+0

這是OP問題的直接答案:「如何在默認情況下在cmd.exe中製作Unicode字符集?」,所有步驟都儘可能清晰,正如Alastair McCormack所解釋的:「沒有Unicode字符集在cmd.exe中,chcp 65001提供了一些UTF-8解碼,但它非常基本,並且不提供正確的輸入。「所以我認爲沒有必要解釋Pro和Con的答案。 –

+0

其實第一個'請求查詢'的輸出只顯示第3行和第4行的sqares – realtebo