模块请求如何正确检索重音字符?
我正在使用: 模块:请求 – 简化的HTTP请求方法来刮擦重音字符的网页á é ó ú ê ã
等
我已经试过encoding: utf-8
没有成功。 结果中我仍然得到这个字符。
request.get({ uri: url, encoding: 'utf-8' // ...
有没有任何configuration来解决它?
我不知道这是不是一个问题,但是我为这个模块填了一个 。 还没有答案。 :/
由于二进制被弃用,使用iconv并正确处理解码似乎是一个更好的主意:
var request = require("request"), iconv = require('iconv-lite'); var requestOptions = { encoding: null, method: "GET", uri: "http://something.com"}; request(requestOptions, function(error, response, body) { var utf8String = iconv.decode(new Buffer(body), "ISO-8859-1"); console.log(utf8String); });
重要的部分是将HTTP请求上的编码设置为空encoding: null
。
指定编码为utf8
而不是utf-8
。 以下是Node.js文档中缓冲区的可能编码列表。
-
ascii
– 仅用于7位ASCII数据。 这种编码方法是非常快的,如果设置,将剥离高位。 -
utf8
– Unicode字符。 许多网页和其他文档格式使用UTF-8。 -
base64
– Base64string编码。 -
'binary
– 通过仅使用每个字符的前8位将原始二进制数据编码为string的一种方法。 此编码方法已折旧,应尽可能避免使用Buffer对象。 此编码将在未来版本的Node中删除。