[NodeJS]Node.js编码转换
Node.js ⾃带的 toString() ⽅法不⽀持 gbk,因此中⽂转换的时候需要加载第三⽅库,推荐以下两个编码转换库,iconv-lite 和 encoding。
iconv, iconv-lite 和 encoding 是什么?
iconv:是在类 Unix 系统中⼀种标准字符集转换接⼝,⽤于在不同字符集编码之间进⾏转换,最早出现在 HP-UX 系统中。
iconv-lite:是 iconv 的纯 js 实现,⽀持的编码包括 node.js 原⽣编码:utf8, ucs2, ascii, binary, base64;同时⽀持⼴泛使⽤的单字节编码:Windows 125x family, ISO-8859 family, IBM/DOS codepages, Macintosh family, KOI8 family, latin1, us-ascii;多字节编码:gbk, gb2313, Big5, cp950。官⽅宣称⽐ node-iconv 更快。
encoding:是对 node-iconv 和 iconv-lite 的再次封装,encoding ⾸先调⽤ node-iconv,如果 node-iconv ⽆法解析,则调⽤ iconv-lite 作为替代⽅案。
iconv-lite 安装使⽤
1. 安装
$ npm install iconv-lite
2. 使⽤
var iconv = require('iconv-lite');
// Convert from an encoded buffer to js string.
str = iconv.decode(buf, 'win1251');
// Convert from js string to an encoded buffer.
buf = de("Sample input string", 'win1251');
// Check if encoding is supported
3. iconv-lite和node-iconv的性能对⽐
operation iconv@1.2.4 iconv-lite@0.2.4
-
---------------------------------------------------------
encode('win1251') ~115 Mb/s ~230 Mb/s
decode('win1251') ~95 Mb/s ~130 Mb/s
encoding 安装使⽤
1. 安装
$ npm install encoding
2. 使⽤
encoding 模块就⼀个⽅法 convert(),使⽤⽅法为:vert(text, toCharset, fromCharset)。
text: 需要转换的对象,可以为 Buffer 或者 String 对象。
toCharset: 转换后的编码。
fromCharset: 转换前的编码,缺省为 uft8。
转换后的输⼊结果为 Buffer 对象。
var encoding = require('encoding');
var result = vert("ÕÄÖÜ", "Latin_1");
console.log(result); //<Buffer d5 c4 d6 dc>
番外篇:jschardet
nodejs字符串转数组什么是 jschardet?
jschardet 是由 António Afonso 从 Python 的 chardet 移植到 Javascript 的 jschardet。
1. 安装
$ npm install jschardet
2. 使⽤
var jschardet = require("jschardet")
/
/ "àíàçã" in UTF-8
jschardet.detect("\xc3\xa0\xc3\xad\xc3\xa0\xc3\xa7\xc3\xa3")
// { encoding: "utf-8", confidence: 0.9690625 }
// "次常⽤國字標準字體表" in Big5
jschardet.detect("\xa6\xb8\xb1\x60\xa5\xce\xb0\xea\xa6\x72\xbc\xd0\xb7\xc7\xa6\x72\xc5\xe9\xaa\xed") // { encoding: "Big5", confidence: 0.99 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论