Node.js API詳解之 string_decoder用法實例分析
本文實例講述了Node.js API詳解之 string_decoder用法。分享給大家供大家參考,具體如下:
string_decoder 模塊提供了一個 API,用于把 Buffer 對象解碼成字符串。
對于參數(shù)末尾不完整的多字節(jié)字符,string_decoder會將其保存在內(nèi)部的buffer中,當再次解碼時,補充到參數(shù)開頭。
通過 const { StringDecoder } = require(‘string_decoder'); 的方式引用string_decoder模塊。
目錄:
- new StringDecoder([encoding])
- stringDecoder.write(buffer)
- stringDecoder.end([buffer])
new StringDecoder([encoding])
說明:
創(chuàng)建一個新的StringDecoder實例,可傳遞encoding參數(shù)作為字符編碼格式,默認為'utf8′
stringDecoder.write(buffer)
說明:
返回一個解碼后的字符串,并確保返回的字符串不包含殘缺的多字節(jié)字符,殘缺的多字節(jié)字符會被保存在一個內(nèi)部的 buffer 中,
用于下次調(diào)用 stringDecoder.write() 或 stringDecoder.end()。
buffer:待解碼的Buffer
demo:
const decoder = new StringDecoder('utf8'); //字符的16進制小于0x80屬于單字節(jié) let outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67])); console.log(outString); //xiaoqiang //字符的16進制大于0x80屬于雙字節(jié) outString = decoder.write(Buffer.from([0xC2, 0xA2])); console.log(outString); //¢ //單雙字節(jié)混合,置于末尾 outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67, 0xC2])); console.log(outString); //xiaoqiang outString = decoder.write(Buffer.from([0xA2])); console.log(outString); //¢ //單雙字節(jié)混合,置于中間 outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0xC2, 0x69, 0x61, 0x6e, 0x67])); console.log(outString); //xiaoq?iang outString = decoder.write(Buffer.from([0xA2])); console.log(outString); //? //單雙字節(jié)混合,置于開始 outString = decoder.write(Buffer.from([0xC2, 0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67])); console.log(outString); //?xiaoqiang outString = decoder.write(Buffer.from([0xA2])); console.log(outString); //? //單雙字節(jié)混合,置于末尾 outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67, 0xC2])); console.log(outString); //xiaoqiang outString = decoder.write(Buffer.from([0x78,0xA2])); console.log(outString); //?x?
stringDecoder.end([buffer])
說明:
以字符串的形式返回內(nèi)部 buffer 中剩余的字節(jié),殘缺的字節(jié)會被替換成符合字符編碼的字符
如果提供了 buffer 參數(shù),則在返回剩余字節(jié)之前會再執(zhí)行一次 stringDecoder.write()
demo:
const decoder = new StringDecoder('utf8'); //字符的16進制小于0x80屬于單字節(jié) let outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67])); console.log(outString); //xiaoqiang outString = decoder.end(); console.log(outString); // //單雙字節(jié)混合,置于末尾 outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67, 0xC2])); console.log(outString); //xiaoqiang outString = decoder.end(Buffer.from([0xA2])); console.log(outString); //¢ //單雙字節(jié)混合,置于末尾 outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67, 0xC2])); console.log(outString); //xiaoqiang outString = decoder.end(); console.log(outString); //?
希望本文所述對大家node.js程序設(shè)計有所幫助。
相關(guān)文章
nodejs爬蟲抓取數(shù)據(jù)亂碼問題總結(jié)
這篇文章主要給大家總結(jié)了下nodejs爬蟲抓取數(shù)據(jù)亂碼問題的相關(guān)資料,需要的朋友可以參考下2015-07-07如何在node.js中使用?JsonWebToken模塊進行token加密
目前在web框架中最流行的身份驗證是使用jsonwebtoken,簡稱jwt.可以設(shè)置加密方式,過期時間,存放個人信息,逆解析,下面這篇文章主要給大家介紹了關(guān)于如何在node.js中使用?JsonWebToken模塊進行token加密的相關(guān)資料,需要的朋友可以參考下2023-03-03Node.js發(fā)出請求走Proxyman代理調(diào)試tip詳解
這篇文章主要為大家介紹了Node.js發(fā)出請求走Proxyman代理調(diào)試tip詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08完美解決node.js中使用https請求報CERT_UNTRUSTED的問題
下面小編就為大家?guī)硪黄昝澜鉀Qnode.js中使用https請求報CERT_UNTRUSTED的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01