使用Iconv在nodejs中进行转换编码

问题描述 投票:0回答:1

我正在尝试转换文本的编码,以获取原始文本。但是它只能从我创建的变量中返回正确的文本,而不能从另一个函数的变量中返回正确的文本。一个专业,当我尝试转换另一个文本(HakabaKitarō)时,出现错误:(node:5436) UnhandledPromiseRejectionWarning: Error: Illegal character sequence.

function iso_to_utf8 (text) {
    console.log(`text orginal: ${text}`); //return text orginal: "Queen\u00c2\u0092s Blade OVA 2011"
    body = new Buffer.from(text, "utf8");
    conv = new Iconv("utf8//TRANSLIT//IGNORE", "ISO-8859-1");
    body = conv.convert(body).toString();
    console.log(body); //return Queen\u00c2\u0092s Blade OVA 2011
    body = new Buffer.from("Queen\u00c2\u0092s Blade OVA 2011", "utf8");
    conv = new Iconv("utf8//TRANSLIT//IGNORE", "ISO-8859-1");
    body = conv.convert(body).toString();
    console.log(body); //return Queens Blade OVA 2011

    return body;
}
node.js utf-8 iso-8859-1 iconv
1个回答
0
投票

这是关于\ u00c2 \ u0092字符序列?转换为UTF-8时,这就是字节序列\ xc3 \ x82 \ xc2 \ x92。

// TRANSLIT将其正确复制为ISO-8859-1字节序列\ xc2 \ x92到输出缓冲区,.toString()然后将其解释为UTF-8并转换为U + 0092,这是您终端的控制字符可能会或可能不会显示。

(顺便说一下,U + 007F-U + 009F范围内的所有字符都是控制字符。]

这是所有预期的行为并按预期工作,因此我将继续进行此工作。通过bnoordhuis

© www.soinside.com 2019 - 2024. All rights reserved.