我需要使用Node.js读取一个UTF-16编码的文件(因为文件非常大,所以需要分块读取)。文件中的数据将会被存储到MongoDB中,因此我需要将其转换成UTF-8编码。通过搜索得知,Node.js本身并不支持这种转换,而我需要手动将原始数据从缓冲区转换。但是我认为应该有更好的方法,只是我没有找到。有什么建议吗?
谢谢。
用 utf16le
或者 ucs2
替换掉读取文本文件所用的普通 utf8
编码:
var fileContents = fs.readFileSync('import.csv','utf16le')
或者:var fileContents = fs.readFileSync('import.csv','ucs2')
另外,对于在互联网上搜索信息的任何人:如果在解析文件中出现了额外的“?”字符,则可能是您问题的原因。请将文件视为UTF16/UCS2格式,额外的字符将消失。
Buffer.prototype.toString()
也支持相同的编码参数。如果源是大端的,则需要使用 Buffer.prototype.swap16()
交换字节,因为Node.js目前没有'utf16be'编码。 - Ates Goral