Tag: utf8解码

如何使用节点请求从另一个域获取json文件?

我有一个在远程服务器的JSON文件。 <domainName>/info.json 。 当我导航到我得到的url: { "version": "1.8 RC05" } 但是,当我从我的terminalcurl <domainname>/info.json ,我得到如下所示: T*K-* RP2Գr60Uk % c9@ 当我使用节点request如下: app.get('/', function(req,res){ request.get('<domainname>/info.json').on('response', function(data){ data = data.setEncoding('utf8'); console.log(data.statusCode); res.json(data); }); }); 我得到以下回应: { "statusCode": 200, "headers": { "content-type": "application\/json; charset=utf-8", "content-length": "46", "connection": "close", "date": "Tue, 22 Sep 2015 09:56:22 GMT", "content-encoding": "gzip", "cache-control": "max-age=1800, public", "last-modified": "Mon, […]

如何在node.js中捕获utf-8解码错误?

我刚刚发现Node(testing:v0.8.23,当前git:v0.11.3-pre) 忽略了其缓冲区处理中的任何解码错误 ,用'\ufffd' (Unicodereplace字符)静默地replace了任何非utf8字符,而不是抛出关于非utf8input的exception。 因此, fs.readFile , process.stdin.setEncoding和朋友为您屏蔽了一大类错误的input错误。 不失败,但真的应该: > notValidUTF8 = new Buffer([ 128 ], 'binary') <Buffer 80> > decodedAsUTF8 = notValidUTF8.toString('utf8') // no exception thrown here! ' ' > decodedAsUTF8 === '\ufffd' true '\ufffd'是一个非常有效的字符,可以在合法的utf8中出现(如同ef bf bd ),所以在error handling中基于这个结果显示猴子补丁是不平凡的。 挖掘更深一层,看起来这是源于节点只是推迟到V8的string,而这些又有上述行为,V8没有任何外部世界充满外部编码的数据。 是否有节点模块或其他,让我赶上utf-8解码错误,最好与上下文有关在inputstring或缓冲区中发现错误的上下文?