最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js環(huán)境中使用GBK編碼方式

 更新時間:2026年01月22日 09:34:16   作者:躁動de氣球  
NodeJS環(huán)境中使用GBK編碼,Buffer對象支持多種編碼格式,文章介紹NodeJS原生支持的編碼格式,并推薦使用iconv-lite進行編碼轉(zhuǎn)換

NodeJS環(huán)境中使用GBK編碼

Node默認支持的編碼格式

Node中的Buffer對象支持以下編碼(以6.9.1版本為例):參考API[https://npm.taobao.org/mirrors/node/latest/docs/api/buffer.html#buffer_buffers_and_character_encodings]

  • ascii :7-bit ASCII data,舍棄高位
  • utf8 : 多字節(jié)編碼,大多數(shù)情況下String的默認編碼格式
  • utf16le : 2或4字節(jié)編碼
  • base64 : BASE64
  • latin1 (別名 binary): 單字節(jié)編碼( A way of encoding the Buffer into a one-byte encoded string (as defined by the IANA in RFC1345, page 63, to be the Latin-1 supplement block and C0/C1 control codes))
  • binary : latin1的別名
  • hex : 單字節(jié)編碼,用2位十六進制數(shù)字編碼一個字節(jié)

GBK與UTF-8

簡單說一個是國家標準(GB)、一個是國際標準。

GBK是我國頒布的一種漢字編碼,作為一個體系,其前身是GB2312,后來演進為GB18030。這個系列的編碼標準致力于解決中國國內(nèi)面臨的文字的編碼問題,支持的語言包括中文漢字(簡體)、日語、韓語、藏文、蒙文、維吾爾文等,主要還是中文。常見漢字用兩個字節(jié)編碼。

UTF-8是一種國際標準,同一個體系的還有UTF-16等。UTF-8致力于解決地球上全部文字的編碼表示問題,除了東亞文字還包括其他語言的編碼,如波斯文。其編碼一個文字采用兩個或三個字節(jié)。

一個常用漢字占用的字節(jié)數(shù):

  • GB2312:2字節(jié),GBK:2字節(jié),GB18030:2字節(jié),UTF-8:3字節(jié)

稀有的漢字:

  • GB2312: 不包含, GBK:包含,GB18030:包含,UTF-8:包含

特別稀有的漢字:

  • GB2312: 不包含, GBK:不包含,GB18030:包含,UTF-8:不包含

兩種編碼同時存在,且會長期共存。同一個系統(tǒng)內(nèi)部盡量不要混用。

使用iconv-lite做編碼轉(zhuǎn)換

Node環(huán)境下處理漢字編碼常用的有iconv和iconv-lite,前者使用二進制庫實現(xiàn),后者純JS實現(xiàn)(性能上后者略好【沒有實際測試】),這里只介紹iconv-lite[https://npm.taobao.org/package/iconv-lite]
iconv-lite支持的編碼格式包括:

  • 所有node.js原生支持的編碼: utf8, ucs2 / utf16-le, ascii, binary, base64, hex.
  • 其他unicode編碼: utf16, utf16-be, utf-7, utf-7-imap.
  • 所有常見單字節(jié)編碼:Windows 125x系列, ISO-8859系列, IBM/DOS codepages, Macintosh系列, KOI8系列, 其他iconv庫支持的編碼. 支持latin1, us-ascii這類別名.
  • 所有常見多字節(jié)編碼: CP932, CP936, CP949, CP950, GB2313, GBK, GB18030, Big5, Shift_JIS, EUC-JP.

官方給出的例子:

var iconv = require('iconv-lite');
str = iconv.decode(new Buffer([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251');
buf = iconv.encode("Sample input string", 'win1251');

也支持Stream方式使用,參見 https://npmmirror.com/package/iconv-lite

對于早期版本的Node,可以通過extendNodeEncodings在不影響代碼結(jié)構(gòu)的情況下擴展Node各原生接口支持的編碼種類;這種方式在較新版本(v4+)已經(jīng)廢棄無法使用。

給出一個從GBK文件讀取內(nèi)容,然后編碼轉(zhuǎn)存為UTF-8編碼的例子:

var buffer = Buffer.from(fs.readFileSync('gbkFile.txt',{encoding:'binary'}),'binary');
console.log(buffer);//得到文件內(nèi)容對應(yīng)的Buffer
var text = iconv.decode(buffer,'GBK');//使用GBK解碼
console.log(text);
//console.log(iconv.encode(text, 'utf8'));
//console.log(iconv.encode(text, 'gbk'));
fs.writeFileSync('utfFile.txt',iconv.encode(text, 'utf8'),'binary'); //按二進制方式寫入
fs.writeFileSync('utfFile2.txt',text,'utf8'); //按UTF8寫入

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • nvm報錯Now?using?node?v版本號(64-bit)圖文解決方法

    nvm報錯Now?using?node?v版本號(64-bit)圖文解決方法

    這篇文章主要給大家介紹了關(guān)于nvm報錯Now?using?node?v版本號(64-bit)的解決方法,文中將解決的辦法介紹的非常詳細,對遇到這個問題的朋友具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • node.js中的events.emitter.once方法使用說明

    node.js中的events.emitter.once方法使用說明

    這篇文章主要介紹了node.js中的events.emitter.once方法使用說明,本文介紹了events.emitter.once的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node Buffer緩存區(qū)常見操作示例

    node Buffer緩存區(qū)常見操作示例

    這篇文章主要介紹了node Buffer緩存區(qū)常見操作,涉及node.js操作Buffer緩存的創(chuàng)建、寫入、讀取、轉(zhuǎn)換等相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-05-05
  • Nodejs文件上傳、監(jiān)聽上傳進度的代碼

    Nodejs文件上傳、監(jiān)聽上傳進度的代碼

    這篇文章主要介紹了Nodejs文件上傳、監(jiān)聽上傳進度,本文通過實例代碼給大家詳細介紹,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • node中token的生成與解析配置

    node中token的生成與解析配置

    本文主要介紹了node中token的生成與解析配置,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • Rust與NodeJs?web開發(fā)對比總結(jié)大全

    Rust與NodeJs?web開發(fā)對比總結(jié)大全

    Rust編譯的Wasm模塊在Node.js中運行,可實現(xiàn)高性能計算后端,同時利用JavaScript的靈活性,這篇文章主要介紹了Rust與NodeJs?web開發(fā)對比的相關(guān)資料,需要的朋友可以參考下
    2026-01-01
  • 玩轉(zhuǎn)NODE.JS(四)-搭建簡單的聊天室的代碼

    玩轉(zhuǎn)NODE.JS(四)-搭建簡單的聊天室的代碼

    本篇文章主要介紹了利用NODE.JS搭建簡單的聊天室的代碼,有需要的可以了解一下。
    2016-11-11
  • 使用Node.js實現(xiàn)一個文章生成器

    使用Node.js實現(xiàn)一個文章生成器

    本文將從零開始,講解如何使用Node.js來實現(xiàn)一個文章生成器,node里面有很多優(yōu)秀的模塊,現(xiàn)在我們就借助node的fs模塊來操控文本,來實現(xiàn)我們想要的效果,感興趣的小伙伴跟著小編一起來看看吧
    2024-07-07
  • Node.js與Sails redis組件的使用教程

    Node.js與Sails redis組件的使用教程

    這篇文章主要介紹了Node.js與Sails redis組件的使用教程,主要介紹幾個用法,為string,set,hash和list的使用。需要的朋友可以參考下
    2017-02-02
  • node模塊機制與異步處理詳解

    node模塊機制與異步處理詳解

    這篇文章主要介紹了node模塊機制與異步處理詳解的相關(guān)資料,需要的朋友可以參考下
    2016-03-03

最新評論

信阳市| 万年县| 丰宁| 平定县| 海原县| 浙江省| 叙永县| 德清县| 邵东县| 苗栗县| 呼图壁县| 康马县| 阿勒泰市| 兖州市| 石景山区| 阿拉善右旗| 竹北市| 隆化县| 磴口县| 兴安盟| 深泽县| 贺兰县| 德钦县| 兴安县| 宁阳县| 新绛县| 靖江市| 岢岚县| 连州市| 宿州市| 文安县| 昭通市| 肥西县| 桃园县| 宜春市| 历史| 永靖县| 昌吉市| 定南县| 灵台县| 英德市|