国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解Node.js讀寫中文內容文件操作

2024-05-06 15:28:50
字體:
來源:轉載
供稿:網友

由于Node.js僅支持如下編碼:utf8, ucs2, ascii, binary, base64, hex,并不支持中文GBK或GB2312之類的編碼,

因此如果要讀寫GBK或GB2312格式的文件的中文內容,必須要用額外的模塊:iconv-lite

1、安裝模塊:npm install iconv-lite

2、演示代碼,把下面的代碼復制到一個文件中,假設是ch.js(注意:js文件必須保存為utf8編碼格式):

// 加載File System讀寫模塊var fs = require('fs');// 加載編碼轉換模塊var iconv = require('iconv-lite');  var file = "c://a.txt";writeFile(file);readFile(file); function writeFile(file){ // 測試用的中文 var str = "/r/n我是一個人Hello myself!"; // 把中文轉換成字節數組 var arr = iconv.encode(str, 'gbk'); console.log(arr);  // appendFile,如果文件不存在,會自動創建新文件 // 如果用writeFile,那么會刪除舊文件,直接寫新文件 fs.appendFile(file, arr, function(err){  if(err)   console.log("fail " + err);  else   console.log("寫入文件ok"); });} function readFile(file){ fs.readFile(file, function(err, data){  if(err)   console.log("讀取文件fail " + err);  else{   // 讀取成功時   // 輸出字節數組   console.log(data);   // 把數組轉換為gbk中文   var str = iconv.decode(data, 'gbk');   console.log(str);  } });}

3、用node.exe執行這個js文件,結果如下:

C:/>node ch.js<Buffer 0d 0a ce d2 ca c7 d2 bb b8 f6 c8 cb 48 65 6c 6c 6f 20 6d 79 73 65 6c 66 21>寫入文件ok<Buffer 0d 0a ce d2 ca c7 d2 bb b8 f6 c8 cb 48 65 6c 6c 6f 20 6d 79 73 65 6c 66 21> 我是一個人Hello myself! C:/>

注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);// 直接輸出中文字符串了  } });}

結論:使用node.js開發時,無論是代碼文件,還是要讀寫的其它文件,都建議使用UTF8編碼格式保存,這樣可以無需額外的模塊支持

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 万年县| 栾川县| 乐业县| 温泉县| 石家庄市| 富源县| 民丰县| 沙河市| 钟祥市| 定州市| 松原市| 济阳县| 中宁县| 微博| 科技| 闸北区| 甘德县| 桃源县| 甘孜县| 全州县| 怀化市| 济南市| 介休市| 灵川县| 台南县| 化州市| 南投县| 乾安县| 天门市| 大渡口区| 香河县| 隆回县| 温泉县| 天镇县| 银川市| 邵武市| 汝阳县| 波密县| 前郭尔| 沁源县| 苗栗市|