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);