2015-09-25 29 views
0

在Windows(10)框中,爲什麼我可以在某些地方打印「黑旗」(U + 2691) (特別是cmd.exe)?在cmd.exe中打印unicode'黑旗'⚑(U + 2691)字符

更新與意見建議的提示(無解答): - [凱文]的CMD.exe Unicode支持是可疑的(不明,但註銷我有奇怪的CMD.exe行爲問題) - [來自Mark]進程應該寫入ConsoleAPI而不是stdout。 - [來自Lister先生]更改字體。

我改變了Webstorm中的字體。它正在使用monospaced,並正確顯示標誌。我切換到Consolas,Lucida SansCourier New,它在所有這些工作。我看着the list of supported unicode chars for Lucida Console,事實上,U + 2691不在那裏。所以Webstorm可能有一些回退機制來支持角色。

我運行了ConEmu,並將基本字體設置爲Lucida控制檯,並將替代字體設置爲DejaVu Sans,我從here下載了該字體。我不得不手動調整Unicode範圍,將其設置爲2013-3000。瞧,黑旗顯示。因此,雖然第一部分現在已經解決了,但我仍然不清楚字體與圖形和代碼頁在這裏發生了什麼。我認爲,在處理一些unicode時,代碼頁是一個紅色的鯡魚......所以,如果有人有什麼明確的話,我會喜歡一個正確的答案。 ;-)

請注意,我已將cmd.exe字體設置爲Lucida控制檯和當前代碼頁(UTF-8)65001.我也嘗試了其他字體...和chcp 1252。閱讀the Spolsky post,這是非常好的。我認爲我錯過的是凱文在評論中所說的話(cmd.exe沒有正確的 Unicode支持)以及Mark關於繞過標準輸出的說法。這就解釋了cmd.exe的,但很想知道更多關於VS VS VS VS代碼NP ++ ...

我可以在Chrome中看到的字符罰款:

http://graphemica.com/⚑ 
http://graphemica.com/%E2%9A%91 

我可以看到它在其中的一個細:

  • 辦公軟件(Word,Outlook)中
  • WebStorm
  • 的Visual Studio

不過,我看不出在這裏(顯示爲一個盒子):

  • 記事本++
  • Visual Studio代碼
  • CMD.EXE

如果我在節點運行以下命令:

console.log('\u2691:', '\u2691'); 
console.log('Flag:', '⚑') 

它只是轉儲盒子(當我複製和粘貼在這裏很好)。

然後還有其他字符,如:重複選標記(U + 2714)

http://graphemica.com/%E2%9C%94 http://graphemica.com/

這在Visual Studio代碼 '顯示'(這不能證明該標誌),但不會在cmd.exe中顯示。

這裏似乎有很多移動部件:Unicode,char代碼,代碼頁,字體等等。

有人可以幫我解決這個問題嗎?這裏到底發生了什麼?

  1. 爲什麼字符會在某些地方顯示而不顯示在其他地方?

  2. 我能做些什麼來顯示cmd.exe中的字符嗎?

+2

開始[這裏](http://www.joelonsoftware.com/articles/Unicode.html)並知道cmd.exe沒有正確的Unicode支持。 – Kevin

+3

在'cmd.exe'中顯示Unicode字符需要直接使用控制檯API並繞過標準輸出。 –

+3

問題在於字體。 Lucida控制檯不包含⚑或✔字符。如果您必須使用cmd.exe,請選擇一個可用的字體。或者用charmap.exe檢查Lucida Console包含哪些字符並使用其中之一。 –

回答

0

OK,它看起來好像@josefZ讓我最接近答案,所以@josefZ如果你砍我的回答粘貼到您自己的,我會刪除我的。 ;-)

這些都是我一直在尋找的答案(我仍然希望有更多的有大約字體回退和字體VS代碼頁的關係):

看來,你不能得到一個U + 2691的原因是該字體不支持它,而不是代碼頁問題(至少在我的情況下)。

顯然有些程序具有僞造的備份字體。

  • WebStorm未配置爲這樣(我沒有啓用輔助字體),但它在內部完成。

  • Visual Studio Code沒有這個設置,但是當我切換到Deja Vu Mono時,它顯示正常。

具體來說,允許您使用黑色的旗幟在CMD.EXE控制檯: 1.下載Deja Vu Mono字體。 2.解壓並安裝它(全選,點擊右鍵,選擇安裝) 3.按照these instructions的說明使其在cmd.exe中可用。 4.轉到cmd.exe的首選項並選擇字體。

替代品: 1.使用ConEmuset the pseudographics字體到Deja Vu Mono。 2.不要忘了手動設置unicode範圍以包含所需的範圍(2691,在這種情況下,但我將它設置爲:Pseudographics: 2013-3000

希望這有助於。