所以我正在通过标准节点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文件的完美方法是什么?
答案 0 :(得分:0)
如果服务器使用了错误的编码,它就会被破坏并且应该被修复。
(它应该使用application / json,在这种情况下,charset参数是未定义/未使用的。)
答案 1 :(得分:0)
@Julian Reschke显然是对的,但我找到了解决这个问题的方法,现在能够正确地读取json及其所有的Umlaute。
我所做的是使用request's encoding
选项并将其设置为null
,因此request
不会尝试"解析"以任何方式回应。然后我使用iconv.decode(data, 'latin1')
设置当天的正确编码,然后JSON.parse
。工作得很漂亮!