我有一个包含但不限于“Æ”的字符串,但是,当我将其反序列化为对象时,它会将字符转换为“?”。有没有办法反序列化并将“Æ”保留为字符串?
答案 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.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
。
效果很好。