Node.js教程 一文学会编码转换知识点
小作 2018-01-03 来源 :网络 阅读 948 评论 0

摘要:Node.js 自带的 toString() 方法不支持 gbk,因此中文转换的时候需要加载第三方库,这篇Node.js教程中将重点推荐以下两个编码转换库,iconv-lite 和 encoding。

Node.js 自带的 toString() 方法不支持 gbk,因此中文转换的时候需要加载第三方库,这篇Node.js教程中将重点推荐以下两个编码转换库,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 }

希望这篇文章可以帮助到你。总之,同学们,你想要的职坐标IT频道都能找到!


本文由 @小作 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved