发出 Golang HTTP 请求时到微软翻译API (https://msdn.microsoft.com/en-us/library/dn876735.aspx),您在尝试解组 JSON 响应时收到错误:
err = json.Unmarshal(body, &transTransform)
查找无效字符“ï”值的开始
尽管 JSON 数据在作为字符串打印时看起来有效,但响应数据与使用生成的数据之间的比较json.Marshal 揭示差异。
服务器响应包含带有字节顺序标记 (BOM) 的 UTF-8 文本字符串,该字符串将文本标识为 UTF-8 编码。但是,在解码之前必须删除此 BOM。为此,请使用以下行:
body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}
错误消息中出现的字符 ï 是将 UTF-8 BOM 解释为 ISO-8859- 的结果1 个字符串。
通过删除 BOM,JSON 数据可以成功解组为 TransformTextResponse 数据结构。
以上是为什么我的 Golang JSON 解组失败,并出现 Microsoft Translator API 中的'无效字符 \'ï\'\”?的详细内容。更多信息请关注PHP中文网其他相关文章!