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
編碼格式的字符串。