Десериализовать строку, содержащую специальные символы - PullRequest
1 голос
/ 18 мая 2019

У меня есть строка, которая содержит, но не ограничивается "Æ", однако, когда я десериализую это в объект, он превращает персонажа в "?". Есть ли способ десериализации этого и сохранения «" »как строки?

1 Ответ

0 голосов
/ 18 мая 2019

Используйте Encoding.UTF8. Я проверил это в моем примере, как показано ниже:

var a = new Person("Ællo", 33);
string output = JsonConvert.SerializeObject(a);
FileStream fs = new FileStream("test.txt", FileMode.Create, FileAccess.Write);
fs.Write(Encoding.UTF8.GetBytes(output), 0, Encoding.UTF8.GetByteCount(output));
fs.Close();

Вы можете увидеть Encoding.UTF8.GetBytes и Encoding.UTF8.GetByteCount. Кодирует строку в байты. И это пример десериализации, как показано ниже:

byte[] buffer;
fs = new FileStream("test.txt", FileMode.Open, FileAccess.Read);
buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
fs.Close();
Person readPerson = JsonConvert.DeserializeObject<Person>(Encoding.UTF8.GetString(buffer));

Вы можете увидеть Encoding.UTF8.GetString. Хорошо работает.

...