首页 > 后端开发 > Golang > 为什么我的 Golang JSON 解组失败,并出现 Microsoft Translator API 中的'无效字符 \'ï\'\”?

为什么我的 Golang JSON 解组失败,并出现 Microsoft Translator API 中的'无效字符 \'ï\'\”?

Barbara Streisand
发布: 2024-12-06 20:56:15
原创
373 人浏览过

Why Does My Golang JSON Unmarshalling Fail with

从 Microsoft Translator 解组 JSON 时出现“无效字符 'ï' 寻找值的开头”错误

问题

发出 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板