【问题标题】:Encoding prob while reading JSON file from URL从 URL 读取 JSON 文件时的编码问题
【发布时间】:2017-10-27 14:15:22
【问题描述】:

所以我正在通过标准节点http.get 读取远程服务器上的 JSON 文件。这个 JSON 包含这样的字符串:NÖM Portionsbutter PG=20g 100er,但在我的服务器上,同样的字符串看起来像这样:N�M Portionsbutter PG=20g 100er

我认为问题在于 http 请求的标头 (content-type: text/plain;charset=UTF-8) 与 JSON 文件的实际编码 (ISO-8859-1) 之间的差异。

我尝试了几个版本来解决这个问题,比如使用 iconv-lite's iconv.decode(data, 'latin1'),但是这些特殊字符(德语中的“元音变音”)再次显示错误。

有趣的事实:通过浏览器下载文件,通过file -I file.json 检查并获取text/plain; charset=iso-8859-1,然后使用iconv.decode(data, 'latin1') 工作得非常好,而且元音符号是正确的。

我在这里没有想法......正确解析这样的 JSON 文件的完美方法是什么?

【问题讨论】:

    标签: json node.js http encoding


    【解决方案1】:

    如果服务器使用了不正确的编码,它就坏了,应该修复。

    (它应该使用application/json,在这种情况下charset参数是未定义/未使用的)。

    【讨论】:

      【解决方案2】:

      @Julian Reschke 显然是对的,但我找到了解决这个问题的方法,现在可以正确读取包含所有变音符号的 json。

      我所做的是使用request'sencoding 选项并将其设置为null,因此request 不会尝试以任何方式“解析”响应。然后我使用iconv.decode(data, 'latin1') 设置当天的正确编码,然后使用JSON.parse 它。效果很好!

      【讨论】:

        猜你喜欢
        • 2014-01-05
        • 1970-01-01
        • 2012-11-14
        • 1970-01-01
        • 1970-01-01
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 2015-07-27
        相关资源
        最近更新 更多