时发生错误,反序列化类型RD.Details的对象。 “�19.95每人”包含无效的UTF8

2019-10-20 05:58发布

当我尝试和反序列化包含一个£符号,我得到了异常的JSON字符串。

时发生错误,反序列化类型RD.Details的对象。 “�19.95每人”包含无效的UTF8字节。

我日志字符串是如下:

{
   "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。 有不妥的地方,据我所看到的。

Answer 1:

原来,这是改变编码线的只是一个简单的事情

buffer = Encoding.UTF8.GetBytes(serializedString);


文章来源: There was an error deserializing the object of type RD.Details. '�19.95 Per Person' contains invalid UTF8 bytes