electron Nodejs 打开文件中文乱码
之前版本:
import fs from 'fs' fs.readFile(txtFilePath, 'utf-8', function (err, dataText) { console.info("同步文件名In:", basename) //var fileName1 = basename; if (err) { console.error(err); } else { //这儿不管换什么编码都是中文乱码 console.log(dataText); } });
解决版本:
package.json
"iconv-lite":"0.6.3"
import fs from 'fs' const iconv = require('iconv-lite'); var fileStr = fs.readFileSync(txtFilePath, {encoding:'binary'}); var str = iconv.decode(fileStr,'gb2312'); console.info("正确内容:", str);
下面是编码格式参考:
ascii- 仅适用于 7 位 ASCII 数据。这种编码速度很快,如果设置,将剥离高位。 utf8- 多字节编码的 Unicode 字符。许多网页和其他文档格式使用 UTF-8。 utf16le- 2 或 4 个字节,小端编码的 Unicode 字符。支持代理对(U+10000 到 U+10FFFF)。 ucs2 - 'utf16le' 的别名。 base64- Base64 编码。从字符串创建缓冲区时,此编码还将正确接受 RFC4648 第 5 节中指定的“URL 和文件名安全字母表”。 latin1 - 一种将缓冲区编码为单字节编码字符串的方法(由 IANA 在 RFC1345 第 63 页中定义,作为 Latin-1 补充块和 C0/C1 控制代码)。 binary - 'latin1' 的别名。 hex - 将每个字节编码为两个十六进制字符。