Node.js将字符串从ISO-8859-2转换为UTF-8
Node.js convert string from ISO-8859-2 to UTF-8
当我通过Node.js Request下载页面内容时,内容是由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,因此我需要对它进行编码。
问题在Node.js请求中。编码默认设置为UTF8。我必须将其设置为null,现在一切都很好。
request({ uri: 'https://www.jakpsatweb.cz', encoding: null}, function(err, resp, body){
.....
})
从ISO-8859-2到UTF-8的转换工作正常。它是输入(标题变量)有一个错误的内容:标题包含字节EF BF BD.这意味着标题已经是UTF-8编码,但是在你期望的字母(拉丁小写字母a with ACUTE)的地方有一个U+FFFD(替换字符)。
现在,原始网页https://www.jakpsatweb.cz/reklama/index.html在ISO-8859-2中被正确编码,并且在<head>
部分中也有所需的字符集声明。
因此,问题一定是在下载网页(NodeJS)或regexToRetrieveTitle函数的软件中。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- JavaScript ascii 到 utf-8 的转换问题与负数
- 在 JavaScript 中将 UTF-8 字符串转换为 Windows-1250
- 将 iso-8859-1 转换为 utf-8 JavaScript
- Javascript表单缩短-UTF-8转换编码
- 在Node.js中从Windows-1251转换到UTF-8
- Javascript将数字转换为utf-8
- 如何在javascript中将utf-8字符串转换为unlencoded win1251
- 将字符串转换为UTF-16(以及更多格式化)
- Javascript将字符串从GBK转换为utf-8
- Node.js将字符串从ISO-8859-2转换为UTF-8
- 将UTF-8数据转换为适当的字符串格式
- 如何将此字符串转换为普通的utf-8字符串?
- 在Java中将ANSI转换为UTF-8
- 使用JavaScript (UTF-8)将隐式字符串转换为可读字符串
- Javascript将文本从希腊语转换为UTF-8
- 如何在JavaScript中将DOM节点文本值转换为UTF-8
- utf 8 - JavaScript 中的 UTF-16 到 UTF-8 转换
- 我们可以用javascript将ANSI编码的CSV文件转换为utf-8编码的文件
- 将ISO-8859-1转换为UTF-8