节点请求 ISO-8859-1 从节点 4 开始不工作
node request ISO-8859-1 not working since node 4
我得到一个带有 return latin1 的网页
它与节点 0.10 的 iconv-lite 一起工作。但是现在
$ node -v
v4.1.1
I can't use iconv-lite with the latest node version。所以我试图回到 Iconv:
var Iconv = require('iconv').Iconv;
...
request(url, {
uri: url,
method: 'GET'}, function (err, resp, body) {
var ic = new Iconv('ISO-8859-1', 'utf-8');
var buf = ic.convert(body);
body = buf.toString('utf-8');
但这会导致 �ber
它应该是 Über
。
我不知道如何解决这个问题。欢迎任何提示。
尝试 latin1
而不是 iso-8859-1
。这就是文档所说的用于从 iso-8859-1
转换为 utf-8
...
编辑:您还必须将请求编码设置为 'binary' 才能正常工作。
编辑 2:刚刚意识到,以二进制形式请求时您甚至不需要 Iconv。
request(url, {... encoding: 'binary' ...},...
console.log(body)
我得到一个带有 return latin1 的网页
它与节点 0.10 的 iconv-lite 一起工作。但是现在
$ node -v
v4.1.1
I can't use iconv-lite with the latest node version。所以我试图回到 Iconv:
var Iconv = require('iconv').Iconv;
...
request(url, {
uri: url,
method: 'GET'}, function (err, resp, body) {
var ic = new Iconv('ISO-8859-1', 'utf-8');
var buf = ic.convert(body);
body = buf.toString('utf-8');
但这会导致 �ber
它应该是 Über
。
我不知道如何解决这个问题。欢迎任何提示。
尝试 latin1
而不是 iso-8859-1
。这就是文档所说的用于从 iso-8859-1
转换为 utf-8
...
编辑:您还必须将请求编码设置为 'binary' 才能正常工作。
编辑 2:刚刚意识到,以二进制形式请求时您甚至不需要 Iconv。
request(url, {... encoding: 'binary' ...},...
console.log(body)