NPM酷庫,天天兩分鐘,瞭解一個流行NPM庫。·git
咱們的程序與外部系統對接時,輸入輸出的數據常常須要作編碼轉換,由於JavaScript採用的編碼是Unicode,而外部系統的數據編碼多是多種多樣的,好比Windows上的漢字編碼使用的是GBK。github
準確地說,JavaScript的編碼採用的是UCS-2,這是一個很古老的(1990年誕生)有些過期的編碼。可是由於UTF-16編碼徹底兼容UCS-2,因此咱們能夠「簡單」認爲JavaScript是Unicode系的。
好比,咱們須要使用Node.js作一個爬蟲程序,而目標網站頁面編碼是GBK(那必定是一個古老的站點),咱們抓取過來的漢字內容直接輸出會顯示出亂碼,爲了可以正常識別這些漢字內容,咱們須要將GBK編碼Buffer轉換爲JavaScript的Unicode。網站
iconv 是Linux系統上很是著名的庫,它能夠將數據在任何編碼間互轉。今天咱們要了解的iconv-lite只是一個簡單版本,但已經足夠咱們使用。ui
const iconv = require('iconv-lite'); // 將Unicode字符串轉換爲GBK編碼的Buffer let buf = iconv.encode("漢字", 'GBK'); // 這樣會輸出亂碼 console.log(buf.toString()); // 將GBK編碼的Buffer數據轉換爲Unicode字符串 let str = iconv.decode(buf, 'GBK'); // 正常輸出 「漢字」 console.log(str);