NodeJs讀取JSON文件格式化時(shí)的注意事項(xiàng)
進(jìn)行NodeJs開(kāi)發(fā)時(shí)偶然發(fā)現(xiàn)的一個(gè)雷點(diǎn)
正常情況下從JSON文件讀取到字符后再通過(guò)JSON.parse沒(méi)什么問(wèn)題,只要格式不出錯(cuò)
有時(shí)在確保JSON格式正確時(shí)仍然會(huì)出現(xiàn)unexpected token異常
經(jīng)過(guò)調(diào)查發(fā)現(xiàn)里面有不會(huì)顯示的unicode字符
于是確定是UTF-8的問(wèn)題,utf-8分有dom版和無(wú)dom版,一般編輯器不刻意設(shè)置會(huì)默認(rèn)保存為帶dom的utf8
解決辦法是先將讀到的文件轉(zhuǎn)成二進(jìn)制,然后檢索dom符號(hào)刪除
代碼實(shí)現(xiàn)部分
function readText(pathname) { var bin = fs.readFileSync(pathname); if (bin[0] === 0xEF && bin[1] === 0xBB && bin[2] === 0xBF) { bin = bin.slice(3); } return bin.toString('utf-8'); }
相關(guān)文章
Node.js連接MySQL數(shù)據(jù)庫(kù)的操作步驟
在現(xiàn)代 Web 開(kāi)發(fā)中,與數(shù)據(jù)庫(kù)的交互是不可避免的一部分,Node.js提供了許多庫(kù)和模塊,使得連接和操作 MySQL 數(shù)據(jù)庫(kù)變得相對(duì)簡(jiǎn)單,本文將介紹如何使用Node.js連接MySQL數(shù)據(jù)庫(kù),并進(jìn)行一些基本的操作,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11Nodejs提取網(wǎng)址參數(shù)解決“querystring”已棄用問(wèn)題
無(wú)論是前端還是后端,經(jīng)常出現(xiàn)的應(yīng)用場(chǎng)景是URL中參數(shù)的處理,下面這篇文章主要給大家介紹了關(guān)于Nodejs提取網(wǎng)址參數(shù)解決“querystring”已棄用問(wèn)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08詳解node Async/Await 更好的異步編程解決方案
這篇文章主要介紹了詳解Async/Await 更好的異步編程解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Grunt針對(duì)靜態(tài)文件的壓縮,版本控制打包的實(shí)例講解
下面小編就為大家?guī)?lái)一篇Grunt針對(duì)靜態(tài)文件的壓縮,版本控制打包的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09NodeJs中express框架的send()方法簡(jiǎn)介
這篇文章主要介紹了NodeJs中express框架的send()方法簡(jiǎn)介,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06npm?install?XXX安裝路徑文件夾權(quán)限問(wèn)題的解決過(guò)程
這篇文章主要給大家介紹了關(guān)于npm?install?XXX安裝路徑文件夾權(quán)限問(wèn)題(npm?ERR!?The?operation?was?rejected?by?your?operating?system.errno?-4080)的解決過(guò)程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04