2013-04-13 36 views
1

我需要將C#中的中文轉換爲Unicode,類似於this converter。例如將文本轉換成HTML的數字字符引用

"大家好" -> "大家好" 
+1

我需要睡眠......除此之外,您還提供的鏈接是404 – Lemurr

+1

的可能的複製 - http://stackoverflow.com/ques tions/3571563/conversion-chinese-character-to-unicode –

+0

這應該作爲一個副本而不是「不是真正的問題」來關閉(問題是真實的,雖然是隱含的)。 –

回答

3
string input = "大家好"; 

StringBuilder sb = new StringBuilder(); 

for (int i = 0; i < input.Length; i += char.IsSurrogatePair(input, i) ? 2 : 1) 
{ 
    int codepoint = char.ConvertToUtf32(input, i); 
    sb.Append('&').Append('#').Append(codepoint).Append(';'); 
} 

var result = sb.ToString(); 
// result == "&#22823;&#23478;&#22909;" 
+0

+1。提供您爲什麼需要IsSurrogatePair/ConvertToUtf32可能是個好主意。 –

+1

簡而言之,.NET中的char是16位的數據類型,而字符串是char的序列。不過,大約有2^21個Unicode代碼點,所以不是所有的代碼點都可以存儲在一個'char'中。 0x10000以上的代碼點存儲爲兩個代理項「char」(「代理對」)。相比之下,HTML中的數字字符引用表示代碼點,因此在將字符串轉換爲HTML之前,必須先將「char」的序列轉換爲一系列代碼點。 – dtb

+0

那麼你不需要兩個。你可以在循環體中檢查if(codepoint> 0xFFFF){i ++}'並且保持循環頭的標準。 – Esailija