一尘不染

Node.js支持的编码列表

node.js

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

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

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

readFileSync接受什么编码?


阅读 397

收藏
2020-07-07

共1个答案

一尘不染

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

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

如果您使用的是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');
}
2020-07-07