2011-04-13 32 views
5

我正在使用WinForm應用程序,並且我有一個文本框,用於粘貼來自Google Translator的文本。我用幾種Sematic和Indo語言獲得了積極的成果,但中文字符顯示爲Boxes。在Windows窗體文本框中是否無法粘貼中文字符

有什麼辦法可以解決這個問題嗎?

+2

這是因爲默認的Windows字體 - 可能的Microsft無襯線 - 沒有這些字符。您可以將文本框使用的字體更改爲其他字體Arial Unicode(如果您有Office)或其中一種中文特定字體,但我不知道如何根據內容爲每個字符或智能地執行此操作。假設你的應用程序是Unicode,那麼字符仍然會正確粘貼,順便說一句,即使它們顯示不正確。 – Rup 2011-04-13 08:52:40

+0

是的,我正在使用Microsfot Sans Serif。你推薦使用Arial Unicode嗎?它會解決很多問題嗎? – 2011-04-13 08:55:20

+0

我不知道 - 我想如果可以的話,單獨使用默認字體可能會更好(並且中國用戶已經在使用支持他們字符的字體了 - mingliu?)。 Arial Unicode隨Office提供,不包含Windows,所以只有安裝了Office的用戶才能擁有它,因此根據您部署的用戶,它可能不是最佳選擇。 – Rup 2011-04-13 08:59:12

回答

4

您應該使用適當的Unicode字體,它支持CJK編碼。更好的是「Arial Unicode MS」,但它可能在沒有安裝MS Office的Vista上早於 操作系統。在這種情況下,您可以使用另一種字體,如「NSimSun」。

 
string arialUnicodeFontFace = "Arial Unicode MS"; 
Font unicodeFont = new Font(arialUnicodeFontFace, fontSize); 
if (unicodeFont.Name != arialUnicodeFontFace) 
    unicodeFont = new Font("NSimSun", fontSize); 

yourTextBox.Font = unicodeFont; 

您也可以看看不同版本的Windows的所有受支持CJK的字體列表: http://en.wikipedia.org/wiki/List_of_CJK_fonts

+0

默認情況下,「Arial Unicode MS」似乎無法在Vista(或Win7)中使用 - 您也需要某些Office產品,例如Word或Excel。請參閱:http://www.microsoft.com/typography/fonts/font.aspx?FMID=1081 – 2013-02-08 22:48:28