node 如何解决文件读取中出现的乱码�

1,222 阅读1分钟

一、乱码是如何产生的

测试数据:

故常无,欲以观其妙,常有,欲以观其徼。

代码如下:

image.png

执行程序,得到以下输出结果:

image.png

出现乱码的问题,在于如下这句代码:

outputStr += buffer

这句代码隐藏了toString()的操作, 它等价于如下的代码:

outputStr = outputStr + buffer.toString();

toString()方法的默认编码是UTF-8,中文字在UTF-8下占3个字节,由于读取的字节数并不能完整的转化为中文,故出现乱码。

二、解决方案

1、通过Buffer.concat()方法,拼接读取的数据,最后再转换为字符串

代码如下:

image.png

输出结果:

image.png

从上图可知,最终得到的字符串是没有乱码的。

2、通过string_decoder模块的提供的StringDecoder对象来解决乱码

代码如下:

image.png

输出结果:

image.png