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

Convert iso-8859-1 to utf-8 javascript

本文关键字:utf-8 JavaScript 转换 iso-8859-1      更新时间:2023-09-26

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

var buffer = iconv.encode(data, "iso-8859-1");
data = iconv.decode(buffer, 'utf8');

它不起作用。所有符号(如 å 或 ä)都转换为 ï¿1/2

如何保存这些符号?

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

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

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

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

    fs.writeFileSync(outputFilePath, output);
    

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

> iconv.encodingExists("ISO-8859-1");
true

它对我有用:

var tempBuffer = new Buffer(response.body, 'iso-8859-1');
var iconv = new Iconv('ISO-8859-1', 'UTF-8');
var tempBuffer = iconv.convert(tempBuffer);

使用"iconv"模块 https://github.com/bnoordhuis/node-iconv

您现在可以使用Web标准TextDecoder解码字符串(也适用于node和deno):

const { readFile } from 'fs'
const encoded = await readFile(inputFilePath)
const decoded = new TextDecoder('windows-1252').decode(encoded)

请注意,windows-1252相当于ISO-8859-1更多,结帐 https://developer.mozilla.org/en-US/docs/Web/API/Encoding_API/Encodings

我想识别图片上的文件在此处输入图像描述

下面的代码可以让中文不乱码

import iconv from 'iconv-lite';
var buffers = fs.readFileSync(path.join(__dirname, 'file/1.csv'));
var output = iconv.decode(buffers, 'gbk');