1

图片描述

NPM酷库,每天两分钟,了解一个流行NPM库。·

我们的程序与外部系统对接时,输入输出的数据经常需要做编码转换,因为JavaScript采用的编码是Unicode,而外部系统的数据编码可能是多种多样的,比如Windows上的汉字编码使用的是GBK。

准确地说,JavaScript的编码采用的是UCS-2,这是一个很古老的(1990年诞生)有些过时的编码。但是因为UTF-16编码完全兼容UCS-2,所以我们可以“简单”认为JavaScript是Unicode系的。

比如,我们需要使用Node.js做一个爬虫程序,而目标网站页面编码是GBK(那一定是一个古老的站点),我们抓取过来的汉字内容直接输出会显示出乱码,为了能够正常识别这些汉字内容,我们需要将GBK编码Buffer转换为JavaScript的Unicode。

iconv-lite

iconv 是Linux系统上非常著名的库,它可以将数据在任何编码间互转。今天我们要了解的iconv-lite只是一个简单版本,但已经足够我们使用。

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

参考资料

https://github.com/ashtuchkin...


脉冲云_梁兴臣
616 声望194 粉丝

脉冲云CTO,JS全栈开发,DevOps实施,开发体验优化,开发效率提升