本文介绍了有一个错误反序列化类型RD.Details的对象。 “�19.95每人'包含无效的UTF8字节的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我尝试和反序列化,其中包含一个£符号我得到的异常JSON字符串。
When I try and deserialize a JSON string which contains a £ symbol I get the exception.
有一个错误反序列化类型RD.Details的对象。 �19.95每人'包含无效的UTF8字节。
我登录的字符串是如下:
The string which I log is as below:
{
"Promotions":[
{
"Name":"Traditional Afternoon Tea £19.95 Per Person",
"PromotionId":20175,
"Quantity":2
}
]
}
这是我如何反序列化:
var responseJsonSerializer = new DataContractJsonSerializer(typeof(TR));
Stream serializedStream;
string serializedString;
byte[] buffer;
using (WebResponse webResponse = webRequest.GetResponse())
{
serializedStream = webResponse.GetResponseStream();
using (StreamReader sr = new StreamReader(serializedStream))
{
serializedString = sr.ReadToEnd();
}
Report.Log("Message Response JSON Object: " + serializedString);
buffer = Encoding.Default.GetBytes(serializedString);
using (MemoryStream stream = new MemoryStream(buffer))
{
return responseJsonSerializer.ReadObject(stream) as TR;
}
}
我不明白为什么£符号被视为无效UTF8。有不妥的地方,据我所看到的。
I don't understand why the £ symbol is being seen as invalid utf8. There is nothing wrong with it as far as I can see.
推荐答案
原来这是改变的编码行
buffer = Encoding.UTF8.GetBytes(serializedString);
这篇关于有一个错误反序列化类型RD.Details的对象。 “�19.95每人'包含无效的UTF8字节的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!