当在 Linux slave (MacOS) 上使用 CURL 从 API 将 JSON 消耗到我们的 NodeJS 应用程序中时,我们看到二进制文件,每个字符之间都有控制字符,尽管响应 header 显示正确的内容类型(application/json;charset=utf-16 )
尝试删除控制字符 (json.parse) 会导致 JSON 格式错误。
Windows 上的文本编辑器(notepad、notepad++)在转换文件编码时不显示控制字符
使用“body-parser”似乎也不起作用
curl 命令:
curl -D header.txt -o output.json -XGET "API call that returns JSON output"
仅当从 API 请求较少的产品数量时,以下代码才替换控制字符:
if (_.isString(response)) {
var responseString = response
.replace(/[\u0000-\u001F]+/g, '');
}
非 unix/linux 用户使用的 API 没有任何问题。
如果应该在 API 级别进行修复,请告诉我们应该修复什么?
如果修复应该在消费端,请让我们知道应该修复什么?
最佳答案
要修复 API 级别,
在使用 nodejs 应用程序时执行此操作
res.setHeader('Content-Type','application/json; charset=utf-8')
请注意编码utf-8
固定在消费者层面
这样做,(如果是nodejs应用,考虑response
是Buffer
的一个实例)
const readableResponse = response.toString('utf-8')
关于json - Unix 或 Linux 上的 CURL 报告为二进制文件并显示控制字符,而不是响应 header 所说的内容,并且在 Windows 上没有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48897816/