1、Node环境当中不支持GBK编码
node.js
当中的Buffer
对象支持的编码格式的种类有限,大概有ascii
、utf8
、utf16le
、ucs2
、base64
、binary
、hex
。不支持GBK
的编码形式。对于windows
系统来说,由于历史原因,许多文件默认的编码格式均为GBK
。
比如我们在
windows
系统性新建一个文本文档,在其内部编辑完中文内容之后,在设置保存时,可以看到其默认的编码格式为ANSI
,即为GBK
。
将这个以GBK
编码格式编辑的文本文件移动到项目文件夹当中,使用node
当中的fs
模块对其进行读取其文本内容。由于不支持GBK
的编码,故会出现如下报错信息。
对于那些我们无法改变其编码格式的文件,又需要使用node
来操作其文件内容的,我们需要引用iconv-lite
来帮助我们解决编码转换的问题。
2、iconv-lite的使用
iconv-lite
用于在node
当中处理在各种操作系统出现的各种奇特编码,该模块不提供读写文件的操作,只提供文件编码转换的功能。
1、下载模块包
在当前项目文件夹的目录下打开cmd
,在控制台输入命令->npm install iconv-lite
。
2、引包并使用
使用const iconvLite = require('iconv-lite');
来引用。在fs模块读取文件结束之后的回调函数当中,对于data
参数(对应文件的内容)的处理为iconvLite.decode(data,'gbk');
。即代表对于默认为buffer
形式的data
当中的内容以gbk
的形式解码成一个默认为utf8
编码格式的字符串。