node.js不能很好地支持中文字符,在读取文件的时候,会出现对中文内容读取的乱码问题(linux系统下默认utf-8编码,一般不会出现该问题,但windows和部分虚拟机由于文件存储格式不同,可能会存在这个问题)
解决方案有两种
1.简便方法
将读取的源文件格式储存为utf8编码格式,读取源文件的js文件也储存为utf-8编码格式,就可以避免中文乱码显示
2.最佳方案
若读取的文件不在本地,我们无法保证文件的存储为utf-8编码格式,这个时候我们可以引入一个模块 ----纯Javascript转换编码的模块 iconv-lite,该模块可以实现window下的转换 ,通过npm可以安装此模块,bufferhelper是一个操作buffer的加强类
首先安装两个模块
npm install iconv-lite
npm install bufferhelper```
//js源代码 --- 读取本地input.txt文件
var iconv = require('iconv-lite');
var fs = require('fs');
var fileStr = fs.readFileSync('input.txt', {encoding:'binary'});
var buf = new Buffer(fileStr, 'binary');
var str = iconv.decode(buf,'utf8');
console.log(str); ```
思路:读取文件->按二进制编码->再按utf-8解码