亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

nodejs讀取本地中文json文件出現(xiàn)亂碼解決方法

 更新時間:2018年10月10日 14:49:10   作者:salmonellavaccine  
在本篇文章中我們給大家分享了關(guān)于nodejs讀取本地中文json文件出現(xiàn)亂碼的解決方法,需要的朋友們可以學(xué)習(xí)下。

1. 確定json文件是UTF-8 無BOM編碼的的。如果有BOM,會在讀取第一行的時候出現(xiàn)亂碼。

Per "fs.readFileSync(filename, 'utf8') doesn't strip BOM markers #1918", fs.readFile is
working as designed: BOM is not stripped from the header of the UTF-8 file, if it exists. It at the discretion of the developer to handle this.

Possible workarounds:

  • data= data.replace(/^\uFEFF/, ''); perhttps://github.com/joyent/node/issues/1918#issuecomment-2480359
  • Transform the incoming stream to remove the BOM header with the NPM module bomstrip perhttps://github.com/joyent/node/issues/1918#issuecomment-38491548

What you are getting is the byte order mark header (BOM) of the UTF-8 file. When JSON.parse sees
this, it gives an syntax error (read: "unexpected character" error). You must strip the byte order mark from the file before passing it to JSON.parse:

fs.readFile('./myconfig.json', 'utf8', function (err, data) {
  myconfig = JSON.parse(data.toString('utf8').replace(/^\uFEFF/, ''));
});
// note: data is an instance of Buffer

2. 確定json沒有格式錯誤。我在用utf8編碼并用utf8 encoding來讀取文件之后依然報錯,百思不得其解。

最后發(fā)現(xiàn)json有兩個editor沒有發(fā)現(xiàn)的格式錯誤,一個是一個數(shù)組中兩個元素之間少了一個“,”,另一個是另一個數(shù)組最后多了一個“,”。

注1:Node的iconv模塊,僅支持linux,不支持Windows,因此要用純js的iconv-lite,另:作者說iconv-lite的性能更好,具體參考Git站點:iconv-lite

注2:我在測試讀寫文件時,始終無法把中文寫入文件,一直亂碼,讀取正常,后來同事幫我發(fā)現(xiàn):js文件的編碼格式是ansi,nodejs的代碼文件必須是utf8格式

注3:如果程序操作的文件,都是以UTF8編碼格式保存的,那么就不需要使用iconv模塊,直接以utf8格式讀取文件即可,如:

// 參數(shù)file,必須保存為utf8格式,否則里面的中文會亂碼  
function readFile(file){  
    // readFile的第2個參數(shù)表示讀取編碼格式,如果未傳遞這個參數(shù),表示返回Buffer字節(jié)數(shù)組  
    fs.readFile(file, "utf8", function(err, data){  
        if(err)  
            console.log("讀取文件fail " + err);  
        else{  
            // 讀取成功時  
            console.log(data);// 直接輸出中文字符串了  
        }  
    });  
}

nodejs讀取中文文件編碼問題

準備一個文本文件(當然也可以是csv文件等)test.txt和text.csv,nodejs文件test.js如下:

var iconv = require('iconv-lite');  
  
var fs = require('fs');  
var fileStr = fs.readFileSync('D:\\test.csv', {encoding:'binary'});  
  
var buf = new Buffer(fileStr, 'binary');  
  
var str = iconv.decode(buf, 'GBK');  
console.log(str);  

直接讀文件的話是亂碼,不信你可以試試。需要先統(tǒng)一用二進制編碼方式讀取,然后再用GBK解碼。

相關(guān)文章

  • js圖片放大鏡實例講解(必看篇)

    js圖片放大鏡實例講解(必看篇)

    下面小編就為大家?guī)硪黄猨s圖片放大鏡實例講解(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • js 靜態(tài)HTML表格排序功能實現(xiàn)

    js 靜態(tài)HTML表格排序功能實現(xiàn)

    對于對于一些表格按價格 等進行排序,方便用戶對當前頁面的高低價格排序,用戶體驗性好
    2009-02-02
  • JavaScript使用cookie記錄臨時訪客信息的方法

    JavaScript使用cookie記錄臨時訪客信息的方法

    這篇文章主要介紹了JavaScript使用cookie記錄臨時訪客信息的方法,涉及javascript操作cookie的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Javascript計算時間差的函數(shù)分享

    Javascript計算時間差的函數(shù)分享

    獲得時間差,時間格式為 年-月-日 小時:分鐘:秒 或者 年/月/日 小時:分鐘:秒
    2011-07-07
  • webpack 模塊熱替換原理

    webpack 模塊熱替換原理

    這篇文章主要介紹了webpack 模塊熱替換原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 原生JavaScript編寫canvas版的連連看游戲

    原生JavaScript編寫canvas版的連連看游戲

    這篇文章主要為大家詳細介紹了原生JavaScript編寫連連看游戲的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 詳解使用JS如何制作簡單的ASCII圖與單極圖

    詳解使用JS如何制作簡單的ASCII圖與單極圖

    這篇文章主要給大家介紹了使用JS如何制作簡單的ASCII圖與單極圖的相關(guān)資料,文中介紹的非常詳細,并在文末給出了詳細的示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • JavaScript反射與依賴注入實例詳解

    JavaScript反射與依賴注入實例詳解

    這篇文章主要介紹了JavaScript反射與依賴注入,結(jié)合實例形式較為詳細的分析了JavaScript反射與依賴注入的概念、原理、定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-05-05
  • JavaScript優(yōu)化圖片懶加載的性能技巧

    JavaScript優(yōu)化圖片懶加載的性能技巧

    前端發(fā)展過程中有許多性能優(yōu)化的操作,比如防抖、節(jié)流和圖片懶加載等,在這里我們首先聊聊圖片懶加載操作,我們會經(jīng)常逛像淘寶和京東等購物平臺,一次性全部加載會導(dǎo)致加載時間長、網(wǎng)絡(luò)資源消耗大,所以本文給大家介紹了JavaScript優(yōu)化圖片懶加載的性能技巧
    2024-06-06
  • js實現(xiàn)mp3錄音通過websocket實時傳送+簡易波形圖效果

    js實現(xiàn)mp3錄音通過websocket實時傳送+簡易波形圖效果

    這篇文章主要介紹了js實現(xiàn)mp3錄音通過websocket實時傳送+簡易波形圖效果,本文通過實例代碼給大家介紹的非常詳細對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06

最新評論