node?NPM庫(kù)qs?iconv-lite字符串編碼轉(zhuǎn)換及解析URL查詢學(xué)習(xí)
NPM酷庫(kù)
每天兩分鐘,了解一個(gè)流行NPM庫(kù)。
querystring庫(kù)
Node.js 標(biāo)準(zhǔn)庫(kù)中有一個(gè)庫(kù)叫querystring,這個(gè)庫(kù)用來(lái)處理URL查詢字符串:
const querystring = require('querystring'); querystring.parse('foo=bar&baz=1'); // { foo:'bar', baz: '1' }
但是很遺憾,querystring 不支持內(nèi)嵌對(duì)象和數(shù)組:
const querystring = require('querystring'); querystring.parse('foo[bar]=1&baz[]=2'); // { 'foo[bar]': '1', 'baz[]': '2' }
如果我們程序的前端界面form表單中存在數(shù)組,標(biāo)準(zhǔn)庫(kù)的querystring就無(wú)法滿足我們的需求了。
qs
qs 是querystring的增強(qiáng)版本,最重要的特性就是支持內(nèi)嵌對(duì)象和數(shù)組:
const qs = require('qs'); qs.parse('foo[bar]=1&baz[]=2'); // { foo: { bar: '1' }, baz: [ '2' ] }
參考資料
iconv-lite 庫(kù)
我們的程序與外部系統(tǒng)對(duì)接時(shí),輸入輸出的數(shù)據(jù)經(jīng)常需要做編碼轉(zhuǎn)換,因?yàn)镴avaScript采用的編碼是Unicode,而外部系統(tǒng)的數(shù)據(jù)編碼可能是多種多樣的,比如Windows上的漢字編碼使用的是GBK。
準(zhǔn)確地說(shuō),JavaScript的編碼采用的是UCS-2,這是一個(gè)很古老的(1990年誕生)有些過(guò)時(shí)的編碼。但是因?yàn)閁TF-16編碼完全兼容UCS-2,所以我們可以“簡(jiǎn)單”認(rèn)為JavaScript是Unicode系的。
比如,我們需要使用Node.js做一個(gè)爬蟲(chóng)程序,而目標(biāo)網(wǎng)站頁(yè)面編碼是GBK(那一定是一個(gè)古老的站點(diǎn)),我們抓取過(guò)來(lái)的漢字內(nèi)容直接輸出會(huì)顯示出亂碼,為了能夠正常識(shí)別這些漢字內(nèi)容,我們需要將GBK編碼Buffer轉(zhuǎn)換為JavaScript的Unicode。
iconv 是Linux系統(tǒng)上非常著名的庫(kù),它可以將數(shù)據(jù)在任何編碼間互轉(zhuǎn)。今天我們要了解的iconv-lite只是一個(gè)簡(jiǎn)單版本,但已經(jīng)足夠我們使用。
const iconv = require('iconv-lite'); // 將Unicode字符串轉(zhuǎn)換為GBK編碼的Buffer let buf = iconv.encode("漢字", 'GBK'); // 這樣會(huì)輸出亂碼 console.log(buf.toString()); // 將GBK編碼的Buffer數(shù)據(jù)轉(zhuǎn)換為Unicode字符串 let str = iconv.decode(buf, 'GBK'); // 正常輸出 “漢字” console.log(str);
參考資料
https://github.com/ashtuchkin...
以上就是node NPM庫(kù)qs iconv-lite字符串編碼轉(zhuǎn)換及解析URL查詢學(xué)習(xí)的詳細(xì)內(nèi)容,更多關(guān)于node NPM庫(kù)qs iconv-lite的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nodejs multer實(shí)現(xiàn)文件上傳與下載
這篇文章主要為大家詳細(xì)介紹了nodejs multer實(shí)現(xiàn)文件上傳與下載的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05學(xué)習(xí)使用grunt來(lái)打包JavaScript和CSS程序的教程
這篇文章主要介紹了學(xué)習(xí)使用grunt來(lái)打包JavaScript和CSS程序的教程,grunt基于node.js和需要的朋友可以參考下2016-01-01nodejs版本過(guò)高導(dǎo)致vue2版本的項(xiàng)目無(wú)法正常啟動(dòng)的解決方案
這篇文章主要給大家介紹了關(guān)于nodejs版本過(guò)高導(dǎo)致vue2版本的項(xiàng)目無(wú)法正常啟動(dòng)的解決方案,本文小編給大家詳細(xì)介紹了如何解決這個(gè)問(wèn)題,如有遇到同樣問(wèn)題的朋友可以參考下2023-11-11基于NodeJS的前后端分離的思考與實(shí)踐(四)安全問(wèn)題解決方案
本文就在前后端分離模式的架構(gòu)下,針對(duì)前端在Web開(kāi)發(fā)中,所遇到的安全問(wèn)題以及應(yīng)對(duì)措施和注意事項(xiàng),并提出解決方案。2014-09-09快速掌握Node.js之Window下配置NodeJs環(huán)境
快速掌握Node.js之Window下配置NodeJs環(huán)境,如何在Window下快速配置NodeJs環(huán)境,感興趣的小伙伴們可以參考一下2016-03-03node.js中的fs.statSync方法使用說(shuō)明
這篇文章主要介紹了node.js中的fs.statSync方法使用說(shuō)明,本文介紹了fs.statSync的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12Node?ORM項(xiàng)目中使用Sequelize實(shí)例詳解
這篇文章主要為大家介紹了Node?ORM項(xiàng)目中使用Sequelize實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04node.js操作mongodb學(xué)習(xí)小結(jié)
這篇文章主要介紹了node.js操作mongodb學(xué)習(xí)小結(jié),本文給出了mongodb創(chuàng)建數(shù)據(jù)庫(kù)、插入數(shù)據(jù)以及連接mongodb數(shù)據(jù)庫(kù)并查詢數(shù)據(jù)等代碼實(shí)例,需要的朋友可以參考下2015-04-04nodejs檢測(cè)因特網(wǎng)是否斷開(kāi)的解決方案
這篇文章主要給大家介紹了關(guān)于nodejs如何檢測(cè)因特網(wǎng)是否斷開(kāi)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用nodejs具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼
這篇文章主要介紹了koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05