2011-12-03 51 views
2

當\ U用於unicode文字時,出現了'無法識別的轉義序列'的編譯錯誤,我的程序有什麼問題嗎?使用 U轉義時出現編譯錯誤

public class TestProject 
{ 

static void Main(string[] args) 
{ 
    string s1 = "\UD800DC09"; 
    Console.WriteLine(s1); 
} 
} 
+0

歡迎您。另外,由於您是StackOverflow的新手,因此我想告訴您,您可以通過選中答案旁邊的勾號來接受最能幫助您的答案。 –

回答

4

看到這個msdn article。它說:「不支持代碼點超過0x10FFFF的Unicode字符。」

編輯: 可能是你想要的是:

string s1 = "\uD800\uDC09"; 
+0

從技術上講,沒有Unicode代碼點> 10FFFF的Unicode字符,因爲Unicode是21位代碼。 – Joey

+0

@Olivier Jacot-Descombes,MSDN文章稱大寫字母U'\ U'後面跟隨一個8位數字作爲有效的Unicode轉義序列,如果有的話如何得到編譯錯誤? – Fei

+2

是的,但只有10ffff的值纔有效。您使用的值d800dc09實際上看起來像代理對。我已經看到微軟編譯器破解ffff之上的代碼點並且像之前那樣顯示它們。您可能需要的是\ U00010009,它是具有代理表示D800 DC09的代碼點。 – bames53

1

使用小寫u

string s1 = "\uD800DC09"; 

https://ideone.com/OIsC9

+0

儘管如此,它仍然是一個破碎的角色。 –