[NodeJS] Node.js 编码转换
2014-01-03 14:45
288 查看
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. 安装
2. 使用
3. iconv-lite和node-iconv的性能对比
encoding 安装使用
1. 安装
2. 使用
encoding 模块就一个方法 convert(),使用方法为:encoding.convert(text, toCharset, fromCharset)。
text: 需要转换的对象,可以为 Buffer 或者 String 对象。
toCharset: 转换后的编码。
fromCharset: 转换前的编码,缺省为 uft8。
转换后的输入结果为 Buffer 对象。
番外篇:jschardet
什么是 jschardet?
jschardet 是由 António Afonso 从 Python 的 chardet 移植到 Javascript 的 jschardet。
1. 安装
2. 使用
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 = iconv.encode("Sample input string", 'win1251'); // Check if encoding is supported iconv.encodingExists("us-ascii")
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(),使用方法为:encoding.convert(text, toCharset, fromCharset)。
text: 需要转换的对象,可以为 Buffer 或者 String 对象。
toCharset: 转换后的编码。
fromCharset: 转换前的编码,缺省为 uft8。
转换后的输入结果为 Buffer 对象。
var encoding = require('encoding'); var result = encoding.convert("ÕÄÖÜ", "Latin_1"); console.log(result); //<Buffer d5 c4 d6 dc>
番外篇:jschardet
什么是 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 }
相关文章推荐
- nodejs采坑记录之-“Make sure you have the latest version of node.js and npm installed”
- Node.js 笔记(一) nodejs、npm、express安装
- 【node.js学习笔记】第一章 初识nodejs
- Nodejs+Extjs+Mongodb开发第一天 Nodejs环境搭建
- Node.js笔记(十)Nodejs与DOM操作
- Node.js 笔记(一) nodejs、npm、express安装
- node.js setup wizard ended prematurely Win7安装nodejs失败解决方法(node.js安装)
- NodeJS学习笔记--NodeJS+Express基础概念梳理记录
- nodeJS学习(6)--- Sublime Text3 配置Node.js 开发环境
- [nodeJS]Node.js到底是什么?
- NodeJS官方文档中文版之《Node.js中的定时器》
- nodejs学习四 Node.js NPM
- 【Node.js】安装使用nvm管理nodejs版本
- Ubuntu 16.04 64位 搭建 node.js NodeJS 环境
- 【深入浅出Node.js系列十六】grunt让Nodejs规范起来
- nodejs中的阻塞和非阻塞(https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/)
- Ubuntu 16.04 64位 搭建 node.js NodeJS 环境
- [NodeJS]使用Node.js写一个简单的在线聊天室
- [Node.js] Use nodejs-dashboard event loop delay with hrtime()