У меня проблема с символами Юникода. Когда я хочу кодировать суррогатный символ (от D800
до DFFF
), он кодируется как FFFD
. Я использовал Encoding.Unicode.GetString()
метод он не работает и Decoder.GetChars()
метод он не работает с каждым суррогатным символом .
Я использую следующие коды:
Коды кодирования:
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