2
我有Unicode字符的問題。當我想編碼替代字符(在D800
和DFFF
之間)時,它編碼爲FFFD
。我用Encoding.Unicode.GetString()
方法它不起作用和Decoder.GetChars()
方法它不適用於每個替代字符。Unicode替代字符編碼c#
我使用以下代碼:
編碼代碼:
string unicodeChars="a\uD800\uDA65";
FileStream stream=new FileStream (@"unicode_encoding.txt",FileMode.Create,FileAccess.Write);
byte[] buffer=Encoding.Unicode.GetBytes(unicodeChars);
stream.Write(buffer,0,buffer.Length);
stream.Close();
解碼代碼:
string decodedUnicodeChars;
FileStream stream2=new FileStream (@"unicode_encoding.txt",FileMode.Open,FileAccess.Read);
StreamReader reader=new StreamReader(stream2,Encoding.Unicode);
decodedUnicodeChars=reader.ReadToEnd();
foreach(char c in decodedUnicodeChars)
{
Console.Write("{0} ",Convert.ToInt32(c).ToString("X4"));
}
輸出是:
0061 FFFD FFFD
[Hans Passant](http://stackoverflow.com/users/17034/hans-passant)是正確的。您的值D800,DA65無效,因爲DA65不在範圍內。第二個值需要在DC00和DFFF之間。 – 2011-03-07 00:27:59