我需要读取一个用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'); }