将iso-8859-1转换为utf-8 javascript

MrB*_*Win 12 javascript node.js

我尝试解析"iso-8859-1"页面并使用utf-8保存到我的数据库,这是我的代码:

var buffer = iconv.encode(data, "iso-8859-1");
data = iconv.decode(buffer, 'utf8');
Run Code Online (Sandbox Code Playgroud)

它不起作用.所有符号如å或ä都会转换为�

我该如何保存这些符号?

Álv*_*lez 21

您需要第三方库来完成该任务.您正在使用iconv-lite,因此您需要按照以下步骤操作:

  1. 二进制模式打开输入文件,因此JavaScript不会假设UTF-8也不会尝试转换为其内部编码:

    var fs = require("fs");
    var input = fs.readFileSync(inputFilePath, {encoding: "binary"});
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从ISO-8859-1转换为缓冲区:

    var iconv = require('iconv-lite');
    var output = iconv.decode(input, "ISO-8859-1");
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将缓冲区保存到输出文件:

    fs.writeFileSync(outputFilePath, output);
    
    Run Code Online (Sandbox Code Playgroud)

如果不确定编码名称,您可以测试是否支持给定编码encodingExists():

> iconv.encodingExists("ISO-8859-1");
true
Run Code Online (Sandbox Code Playgroud)

  • 它不起作用。案例是我想修复我的字幕问题,因为它们以 ISO-8859-1 编码并将它们转换为 UTF-8。我通过Firefox`view -> Text Encoding`更改字幕的Unicode并将其更改为`Arabic Windows`并将固定文本替换为字幕文件并将其保存为`UTF-8`来手动完成此操作。通过 Node JS 和您的解决方案自动化程序对我不起作用, (2认同)