反序列化包含特殊字符的字符串

时间:2019-05-18 17:03:38

标签: .net json-deserialization

我有一个包含但不限于“Æ”的字符串,但是,当我将其反序列化为对象时,它会将字符转换为“?”。有没有办法反序列化并将“Æ”保留为字符串?

1 个答案:

答案 0 :(得分:0)

使用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.GetBytesEncoding.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。 效果很好。

相关问题