添加到索引时,无法将索引处的字节数...从指定的代码页转换为Unicode

时间:2015-02-17 10:34:11

标签: azure-search

我正在使用Newtonsoft.Json创建JSON以更新向索引添加项目,但是当我发布请求时出现以下错误:

{"错误":{"代码":"","消息":"请求无效。 "," innererror":{" message":"参数:无法将索引752处的字节[E3]从指定的代码页转换为Unicode。\ r \ N'#34;"类型":"""堆栈跟踪":""}}}

我知道在我序列化的数据中的某些字符串中出现了一些非字母字符的错误。字符串数据来自SQL,因此我猜测某些事情与编码有关,我无法弄清楚。

当我检查JSON字符串,并将其手动构建在Fiddler中使用相同数据的请求时,一切正常。

有没有人知道可能是什么问题,以及我如何解决它?

1 个答案:

答案 0 :(得分:4)

经过多次挖掘后,我找到了自己的解决方案。

将“StringEscapeHandling.EscapeNonAscii”添加到序列化选项可以解决问题:

jsonSettings = new JsonSerializerSettings
{
    Formatting = Newtonsoft.Json.Formatting.Indented,
    ContractResolver = new CamelCasePropertyNamesContractResolver(),
    DateTimeZoneHandling = DateTimeZoneHandling.Utc,
    StringEscapeHandling = StringEscapeHandling.EscapeNonAscii
};