如何在nodejs中读取以utf-16编码的文件?

Rya*_*yne 20 utf-16 node.js

我必须使用nodejs读取以UTF-16编码的文件(因为它非常大,因此在块中).来自文件的数据将进入mongodb,因此我需要将其转换为utf-8.从谷歌搜索看来,这似乎是Node不支持的,我将不得不求助于自己从缓冲区转换原始数据.但我也认为应该有一个更好的方法,我只是没有找到它.有什么建议?

谢谢.

mik*_*ana 26

更换正常utf8阅读的文本文件时,你必须utf16le或者ucs2:

var fileContents = fs.readFileSync('import.csv','utf16le')
Run Code Online (Sandbox Code Playgroud)

要么:

var fileContents = fs.readFileSync('import.csv','ucs2')
Run Code Online (Sandbox Code Playgroud)

此外,对于谷歌:任何人在解析文件中出现额外的 (问号)字符,这可能是您的问题的原因.将文件读为UTF16/UCS2,额外的字符将消失.

  • 附加说明:'ucs2'是'utf16le'(little-endian)的别名.您也可以使用'utf16le',如果这样可以使您的意图在特定情况下更清晰.`Buffer.prototype.toString()`也支持相同的编码参数.如果你的源是big-endian,你需要先使用`Buffer.prototype.swap16()`交换字节,因为Node.js目前没有'utf16be'编码. (2认同)

Mat*_*off 22

Node支持UCS-2,即JavaScript支持的UTF-16子集.尝试使用它.

请参阅此拉取请求.