2009-08-07 58 views
3

這是一個相當低級別(低於「更接近金屬」)的問題。Linux與Windows:控制檯如何呈現unicode字符?

我想知道如果你們中的任何一位能夠在Windows中接收到一個Unicode字符(或任何字符代碼,但我特別感興趣Unicode編碼標準)的控制檯時如何指向我的文檔,解釋等, ,好的'cmd.exe'(使用代碼頁65001)和Linux中的xterm開頭,例如,LC_CTYPE=en_US.UTF-8查找相應的字形(和位置)。

我知道在Windows中可能很難知道,但我無法找到很多信息。

謝謝。

回答

3

據我所知,cmd.exe綁定到您定義爲「非Unicode程序的代碼頁」或任何被調用的任何256個字符的代碼頁。

詳細說明,如果我將上述設置設置爲日語,cmd.exe會突然用日元符號替代反斜槓(就像系統中的其他每個非Unicode應用程序一樣)並正確解釋ShiftJIS代碼。將它設置爲荷蘭文給了我一個帶有重音的I(我忘記了它),而另一個代碼頁會給出一個半填充的垂直實體,而不是相同的字符。

不是Unicode。 Unicode會讓我在同一時間做所有三個。

+0

它不一定是256個字符:shift-JIS實際上是一個MBCS。是的,它在Windows中確實存在日元/反斜槓混淆,這是非常可悲的,可能來自DOS ... – SamB 2011-06-07 02:36:05

+1

爲了澄清,*所有* Windows *中的日語字體*總是這樣做。如果應用程序*是* Unicode,則無關緊要!不要相信我?在「charmap」的MS Mincho中查找U + 005C,或者查看http://blogs.msdn.com/b/michkap/archive/2007/03/28/1972239.aspx – SamB 2011-06-07 03:04:10

1

控制檯使用帶有從代碼頁創建的編碼的TextWriter。這意味着使用編碼頁的特定編碼對象將寫入的字符編碼爲字節。

+0

他非常具體地討論了cmd.exe,這不是,最後我檢查了.Net應用程序,因此它邏輯上不使用TextWriter。除非另有TextWriter,我不知道。 – Kawa 2009-08-07 22:59:42

+0

是的,我剛剛檢查過。它在Process Explorer中並不完全顯示爲黃色。 – Kawa 2009-08-07 23:08:12

+0

好吧,如果我們把它縮小到控制檯本身,它根本不支持unicode字符。如果當前編碼不是UTF-8,並且您嘗試顯示UTF-8文件,則它將使用當前編碼對其進行解碼,而這當然會造成ASCII字符範圍之外的任何混亂。如果當前編碼是UTF-8,則它仍不支持Unicode字符,只支持編碼爲UTF-8的字符。 – Guffa 2009-08-08 07:50:54

1

控制檯不支持Unicode。 :)

+0

是的,這就是我之前所說的。 – Kawa 2009-08-08 12:54:29

+0

這在最近的Linux系統上並非如此。 – 2009-08-08 13:00:53

+0

最近的定義至少可以追溯到1996年的控制檯。如果您的意思是終端仿真器,那麼1999年對XTerm添加了對UTF-8的支持,並且之前已經出現在其他一些終端仿真器中。 – AProgrammer 2009-08-09 14:36:23