在Windows(10)框中,爲什麼我可以在某些地方打印「黑旗」(U + 2691) (特別是cmd.exe)?在cmd.exe中打印unicode'黑旗'⚑(U + 2691)字符
更新與意見建議的提示(無解答): - [凱文]的CMD.exe Unicode支持是可疑的(不明,但註銷我有奇怪的CMD.exe行爲問題) - [來自Mark]進程應該寫入ConsoleAPI而不是stdout。 - [來自Lister先生]更改字體。
我改變了Webstorm中的字體。它正在使用monospaced
,並正確顯示標誌。我切換到Consolas
,Lucida Sans
和Courier 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代碼,代碼頁,字體等等。
有人可以幫我解決這個問題嗎?這裏到底發生了什麼?
爲什麼字符會在某些地方顯示而不顯示在其他地方?
我能做些什麼來顯示cmd.exe中的字符嗎?
開始[這裏](http://www.joelonsoftware.com/articles/Unicode.html)並知道cmd.exe沒有正確的Unicode支持。 – Kevin
在'cmd.exe'中顯示Unicode字符需要直接使用控制檯API並繞過標準輸出。 –
問題在於字體。 Lucida控制檯不包含⚑或✔字符。如果您必須使用cmd.exe,請選擇一個可用的字體。或者用charmap.exe檢查Lucida Console包含哪些字符並使用其中之一。 –