zoukankan      html  css  js  c++  java
  • 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("xc3xa0xc3xadxc3xa0xc3xa7xc3xa3")
    // { encoding: "utf-8", confidence: 0.9690625 }
     
    // "次常用國字標準字體表" in Big5 
    jschardet.detect("xa6xb8xb1x60xa5xcexb0xeaxa6x72xbcxd0xb7xc7xa6x72xc5xe9xaaxed")
    // { encoding: "Big5", confidence: 0.99 }
  • 相关阅读:
    了解 NoSQL 的必读资料
    关于什么时候用assert(断言)的思考
    这次见到了一些大侠
    NetBeans 时事通讯(刊号 # 87 Jan 12, 2010)
    动态链接库dll,静态链接库lib, 导入库lib
    新女性十得 写得了代码,查得出异常
    记录系统乱谈
    新女性十得 写得了代码,查得出异常
    fullpage.js禁止滚动
    RunningMapReduceExampleTFIDF hadoopclusternet This document describes how to run the TFIDF MapReduce example against ascii books. This project is for those who wants to experiment hadoop as a skunkworks in a small cluster (110 nodes) Google Pro
  • 原文地址:https://www.cnblogs.com/thinkingthigh/p/4996813.html
Copyright © 2011-2022 走看看