json - Unix 或 Linux 上的 CURL 报告为二进制文件并显示控制字符,而不是响应 header 所说的内容,并且在 Windows 上没有问题

标签 json linux unix

当在 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应用,考虑responseBuffer的一个实例)

const readableResponse = response.toString('utf-8')

关于json - Unix 或 Linux 上的 CURL 报告为二进制文件并显示控制字符,而不是响应 header 所说的内容,并且在 Windows 上没有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48897816/

相关文章:

c -/dev/random 不阻塞

php - 使用 php mysql 创建嵌套的 json 对象

PHP数据库未添加数据

linux - 在正文中使用 & 参数测量 bash 脚本的运行时间

unix - 如何通过键入脚本名称而不是 sh [scriptname] 来运行 shell 脚本?

linux - 为什么我不能从 setopt 中 grep zle?

php - 返回意外消息的 JSON(或 PHP)

mysql - 如何以正确的格式打印从 REST API 返回的 JSON 日期?

linux - 读取 FAT32 文件系统的引导扇区

c++ - Ubuntu 中的 OpenCV 不显示窗口