我需要读取一个用 ISO-8859-1(也称为 latin1)编码的文件,如下所示:
var file_contents = fs.readFileSync("test_data.html", "latin1");
但是,Node 抱怨“latin1”或“ISO-8859-1”不是有效编码(“错误:未知编码”)。
接受哪些编码readFileSync?
readFileSync
节点本身支持的编码列表相当短:
如果您使用的是 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'); }