• 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 }
  • 相关阅读:
    Linux 分卷压缩
    用 virtualenv 创建隔离的 Python 运行环境
    Ubuntu 16.04 安装 Python3.6
    Python 的全局变量
    Git 使用总结
    开源的许可证GPL、LGPL、BSD、Apache 2.0
    Python Unofficial Package Site
    apt-get update 更新 ubuntu时出现Hash sum mismatch的原因及解决方法
    Keep It Simple & Stupid
    Python IDLE 增加清屏功能
  • 原文地址:https://www.cnblogs.com/thinkingthigh/p/4996813.html
Copyright © 2020-2023  润新知