zoukankan      html  css  js  c++  java
  • [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("xc3xa0xc3xadxc3xa0xc3xa7xc3xa3")
    // { encoding: "utf-8", confidence: 0.9690625 }
    
    // "次常用國字標準字體表" in Big5 
    jschardet.detect("xa6xb8xb1x60xa5xcexb0xeaxa6x72xbcxd0xb7xc7xa6x72xc5xe9xaaxed")
    // { encoding: "Big5", confidence: 0.99 }
  • 相关阅读:
    .net core Ocelot Consul 实现API网关 服务注册 服务发现 负载均衡
    .net core grpc 实现通信(一)
    Shell脚本
    LNMP学习内容总结①
    2018/12/18学习内容摘要
    2019/12/16学习内容摘要(Vim)
    第一周进度及学习总结
    2019/12/12学习内容摘要(Linux系统用户与用户组管理②)
    2019/12/13学习内容摘要(Linux磁盘管理①)
    2019/12/11学习内容摘要(Linux系统用户与用户组管理①)
  • 原文地址:https://www.cnblogs.com/ifantastic/p/3503667.html
Copyright © 2011-2022 走看看