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

mik*_*eyb 5 azure-cognitive-search

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

{"error":{"code":"","message":"请求无效。","innererror":{"message":"参数:无法从指定代码转换索引 752 处的字节 [E3]页到 Unicode。\r\n","type":"","stacktrace":""}}}

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

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

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

mik*_*eyb 6

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

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

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