2011-10-04 56 views
0

我在編寫程序。該程序的一部分涉及從XML文件讀取unicode值並在屏幕上顯示字符。帶有unicode字符的無法識別的轉義序列的困境

現在,當我這樣做是這樣的:

tbTester.Text = "\u597D"; 

它能正常工作(tbTester是一個WinForms文本框)。但在另一種情況下,基本上我需要改變一個字符串來得到'\ u'然後是值。像這樣:

szOut = szOut + "\u"+k.UnicodeID + " "; 

對我來說,這些看起來並不完全不同。只是現在它告訴我「\ u」是一個無法識別的轉義序列。

現在我確實看到了這個問題,雙斜槓或'@'符號不能治癒這種特殊情況,只有現在文本框包含'\ u430B'(或其他),而不是輸出在我的第一個例子。

回答

2

當您像第一個示例一樣編譯代碼時,編譯後的CIL代碼實際上並不包含轉義序列,而是字符本身。而且由於\u本身無效,這會導致您遇到的錯誤。

如果您已將Unicode代碼點設爲整數,則只需通過強制轉換即可將其轉換爲字符。而+運營商將負責其餘的:

szOut = szOut + (char)k.UnicodeID + " "; 

雖然我傾向於選擇string.Format()的情況是這樣的:

szOut = string.Format("{0}{1} ", szOut, (char)k.UnicodeID); 
+0

非常感謝,你已經幫了我。 – user738383

2

嘗試

szOut = szOut + (char)k.UnicodeID; 

你並不需要因爲它不在字面字符串中,所以不再使用字符。你只需要將數字轉換爲它的字符等值。

相關問題