[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 = 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] Node.js 编码转换的更多相关文章
- Node.js 编码转换
Node.js自带的toString()方法不支持gbk,因此中文转换的时候需要加载第三方库,推荐以下两个编码转换库,iconv-lite和encoding. iconv, iconv-l ...
- [NodeJS] Node.js 与 V8 的故事
要说Node.js的历史,就不得不说说V8历史.在此之前我们先一句话描述一下什么是Node.js:Node.js是一个基于Google Chrome V8 Javascript引擎之上的平台,用以创建 ...
- 字符串js编码转换成实体html编码的方法(防范XSS攻击)
js代码在html页面中转换成实体html编码的方法一: <!DOCTYPE html><html> <head> <title>js代码转换成实 ...
- Node.js入门 NPM
参考一 Node入门 七天学会NodeJS Node.js v4.2.4 手册 & 文档 Node.js 教程 node.js摸石头系列 从零开始学习node.js What is ...
- 完全面向于初学者的Node.js指南
新的上班时间是周二至周六,工作之余当然要坚持学习啦. 希望这篇文章能解决你这样一个问题:“我现在已经下载好Node.Js了,该做些什么呢?” 原文URL:http://blog.modulus.io/ ...
- 使用express搭建第一个Web应用【Node.js初学】
来源:http://jingyan.baidu.com/article/bad08e1ee501e009c8512106.html express是一个开源的node.js项目框架,初学者使用expr ...
- 了解 node.js
原文为: 我们为什么要使用NodeJS 写的好,就收藏于此,供学习之用. 科普文一则,说说我对NodeJS(一种服务端JavaScript实现)的一些认识,以及我为什么会向后端工程师推荐NodeJS. ...
- Node.js 字体格式转换 ttf2eot ttf2woff ttf2svg
前几天为了查找字体转换工具网上搜索,既然用 Node.js 来做的工具. https://github.com/fontello/ttf2eot https://github.com/fontello ...
- Node.js superagent 采集 URL 编码问题
今天在用Node学习采集的时候遇到一个问题,如这个链接地址 http://www.meishij.net/胡萝卜 就是用浏览器的方式访问链接可以打开,但用superagent 去模拟请求,就请求不到 ...
随机推荐
- 百度echarts极速入门
1.http://echarts.baidu.com/ 进入官网 2.打开官方示例 3.随便打开一个列子并打开f12浏览器调试模式,找到例子的iframe地址 4.打开地址 5.下载例子,so eas ...
- C艹重复输入小方法,for循环+while
#include <iostream> #include <cctype> #include <string> ; int main(int argc, char ...
- Swing用于开发Java应用程序用户界面
Swing是一个用于开发Java应用程序用户界面的开发工具包. 以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格. Swing开发人员只用很少的代码就可以利用Swing丰富 ...
- SqlException with message "Caught java.io.CharConversionException." and ERRORCODE=-4220
Technote (troubleshooting) Problem(Abstract) When an application uses the IBM Data Server Driver for ...
- Excel破解密码代码
Option ExplicitPublic Sub AllInternalPasswords()' Breaks worksheet and workbook structure passwords. ...
- exportfs命令 NFS客户端问题 FTP介绍 使用vsftpd搭建ftp
exportfs命令 • 常用选项 • -a 全部挂载或者全部卸载 • -r 重新挂载 • -u 卸载某一个目录 • -v 显示共享目录 • 以下操作在服务端上 • vim /etc/exports ...
- recovery中英对照表 recovery大全图解
一:Recovery主界面 ---reboot system now 重启手机(刷机完毕选择此项就能重新启动系统) ---apply SDcard:up ...
- [AngularJS]ng-repeat指令要点
ng-repeat指令要点 1,基本格式,这里不作过多说明,需要的话查看文档 <div ng-repeat="item in someCollection [| someFilter: ...
- PHP数据库备份与恢复
先说下关于数据库备份与恢复的原理: 1.查找所有表->2.查找所有字段->3.查找所有数据->4.生成SQL 备份注意点: 2=>需要列出所有字段名,字段类型等相关信息 3=& ...
- 【WP8】ResourceDictionary
WP8中引用资源字典 当我们定义的样式太多的时候,我们可以把样式分别定义在不同的文件中,然后通过 MergedDictionaries 应用到其他资源字典中,看下面Demo 我们可以把样式定义在多个文 ...