繁体   English   中英

Node.js将字符串从ISO-8859-2转换为UTF-8

[英]Node.js convert string from ISO-8859-2 to UTF-8

当我通过Node.js 请求下载页面内容并且内容通过ISO-8859-2编码时,无法将其转换为UTF-8

我正在使用node-iconv

码:

request('https://www.jakpsatweb.cz', function(err, resp, body){
    const title = regexToRetrieveTitle(body);
    const iconv = new Iconv('ISO-8859-2', 'UTF-8');
    const buffer = iconv.convert(title);
    console.log(buffer);
    console.log(buffer.toString('UTF8'));
})

安慰:

<Buffer 52 65 6b 6c 61 6d 61 3a 20 6a 61 6b 20 66 75 6e 67 75 6a 65 20 77 65 62 6f 76 c4 8f c5 bc cb 9d 20 72 65 6b 6c 61 6d 61>
Reklama: jak funguje webovďż˝ reklama

预期结果:

Reklama: jak funguje webová reklama

有人知道哪里出问题吗?

编辑:

例如,我下载了此页面 我通过元标记(也是Chrome浏览器)识别了ISO-8859-2,我需要转换页面内容并将其保存到数据库。 我的数据库是UTF-8,因此我需要对其进行编码。

从ISO-8859-2到UTF-8的转换效果很好。 内容错误的是输入(标题变量):标题包含字节EF BF BD。 这意味着标题已经采用UTF-8编码,但是在您希望字母á出现的地方加上了U + FFFD(替换字符)(带有ACUTE的拉丁文小写字母A)。

现在,原始网页https://www.jakpsatweb.cz/reklama/index.html已在ISO-8859-2中正确编码,并且在<head>部分中还具有必需的字符集声明。

因此,问题必须出在下载网页(NodeJS)或regexToRetrieveTitle函数的软件中。

问题出在Node.js请求中。 默认情况下,编码设置为UTF8。 我必须将其设置为null ,现在一切正常。

request({ uri: 'https://www.jakpsatweb.cz', encoding: null}, function(err, resp, body){
    .....
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM