从URL读取JSON文件时编码prob

时间:2017-10-27 14:15:23

标签: json node.js http encoding

所以我正在通过标准节点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'),但同样,这些特殊字符(" Umlaute"德语版)显示错误。

有趣的事实:通过浏览器下载文件,通过file -I file.json进行检查并获取text/plain; charset=iso-8859-1然后使用iconv.decode(data, 'latin1')可以正常工作,并且升降机也是正确的。

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

2 个答案:

答案 0 :(得分:0)

如果服务器使用了错误的编码,它就会被破坏并且应该被修复。

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

答案 1 :(得分:0)

@Julian Reschke显然是对的,但我找到了解决这个问题的方法,现在能够正确地读取json及其所有的Umlaute。

我所做的是使用request's encoding选项并将其设置为null,因此request不会尝试"解析"以任何方式回应。然后我使用iconv.decode(data, 'latin1')设置当天的正确编码,然后JSON.parse。工作得很漂亮!