js,nodejs如何判斷文件是什么編碼格式


nodejs編碼只支持utf8的編碼方式,無論是打開某個文件或者寫.js腳本都得以utf8的編碼方式保存,不然程序無法運行,讀出來的文件是亂碼。

如果是在前台,讀取文件是通過FileReader或者FileReaderSync這兩個webAPI和input[type='file']標簽來配合來完成,但是這個兩個API已經包涵了判斷文件的編碼方式的功能,無論是GBK還是utf8編碼的文件都能正確打開不出現亂碼,但是nodejs就會出現這樣的問題,讀取gbk和unicode編碼的文件出現奇怪的亂碼,有一個模塊iconv-lite可以解決編碼問題,但是前提是你得知道這個文件的編碼方式,舉個例子:

有一個gkb的文件叫gbk.txt正確查看它的方式如下:

var icon=require('iconv-lite');

var fs=require('fs')

fs.readFile('gbk.txt',function(err,buffer){

  var str=iconv.decode(buffer,'gbk')

  console.log(str)//得到無亂碼的內容

})

但是如果不知道文件的編碼方式,那有該怎么辦呢?

那就來聊一聊編碼方式,首先UNICODE編碼,UNICODE編碼的文件無論內容是什么,前兩個字節要不是FF FE 或者 FE FF,

utf-8頭兩個字節是EF BB,至於gbk吧,目前我沒找到判斷方法,只能粗略的判斷如果不是unicode和utf8就認為是GBK,

代碼如下:

var fs=require('fs')

fs.readFile('code.txt',function(err,buffer){

     if(buffer[0]==0xff&&buffer[1]==0xfe){

          console.log('unicode')

    }else if(buffer[0]==0xfe&&buffer[1]==0xff){

     console.log('unicode')

    }else if(buffer[0]==0xef&&buffer[1]==0xbb){

   console.log('utf8')

    }else{

     console.log('else')

    }

})


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM