小编典典

Node.js 支持的编码列表

all

我需要读取一个用 ISO-8859-1(也称为 latin1)编码的文件,如下所示:

var file_contents = fs.readFileSync("test_data.html", "latin1");

但是,Node 抱怨“latin1”或“ISO-8859-1”不是有效编码(“错误:未知编码”)。

接受哪些编码readFileSync


阅读 118

收藏
2022-08-16

共1个答案

小编典典

节点本身支持的编码列表相当短

  • ASCII
  • base64
  • base64url (节点 v14+)
  • 十六进制
  • ucs2/ucs-2/utf16le/utf-16le
  • utf8/utf-8
  • binary/latin1(ISO8859-1,latin1 仅在节点 6.4.0+ 中)

如果您使用的是 6.4.0 之前的版本,或者不想处理非 Unicode 编码,您可以重新编码字符串:

使用iconv-lite重新编码文件:

var iconvlite = require('iconv-lite');
var fs = require('fs');

function readFileSync_encoding(filename, encoding) {
    var content = fs.readFileSync(filename);
    return iconvlite.decode(content, encoding);
}

或者,使用iconv

var Iconv = require('iconv').Iconv;
var fs = require('fs');

function readFileSync_encoding(filename, encoding) {
    var content = fs.readFileSync(filename);
    var iconv = new Iconv(encoding, 'UTF-8');
    var buffer = iconv.convert(content);
    return buffer.toString('utf8');
}
2022-08-16