中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nodejs json中文亂碼怎么解決

發布時間:2021-11-19 14:34:33 來源:億速云 閱讀:530 作者:iii 欄目:web開發

本篇內容介紹了“nodejs json中文亂碼怎么解決”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

nodejs json中文亂碼的解決辦法:1、檢查json文件是不是UTF-8無BOM編碼;2、以UTF8編碼格式保存文件;3、用二進制編碼方式讀取,再用GBK解碼即可。

nodejs json中文亂碼怎么解決

本文操作環境:windows7系統、nodejs10.16.2版本、Dell G3電腦。

nodejs json中文亂碼怎么辦?

nodejs讀取本地中文json文件出現亂碼解決方法

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

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來讀取文件之后依然報錯,百思不得其解。

最后發現json有兩個editor沒有發現的格式錯誤,一個是一個數組中兩個元素之間少了一個“,”,另一個是另一個數組最后多了一個“,”。

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

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

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

// 參數file,必須保存為utf8格式,否則里面的中文會亂碼  
function readFile(file){  
    // readFile的第2個參數表示讀取編碼格式,如果未傳遞這個參數,表示返回Buffer字節數組  
    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);

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

“nodejs json中文亂碼怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁远县| 庄浪县| 阳山县| 湘西| 庆元县| 聊城市| 吴江市| 昭平县| 上虞市| 兴隆县| 贵南县| 临泉县| 延安市| 吉首市| 临夏市| 安多县| 朝阳市| 疏勒县| 建德市| 泌阳县| 八宿县| 固原市| 维西| 鄂伦春自治旗| 慈利县| 壤塘县| 日喀则市| 稻城县| 遂溪县| 安化县| 抚顺县| 霸州市| 略阳县| 梁平县| 新乡县| 桦南县| 天津市| 黄平县| 巫溪县| 布尔津县| 正安县|