js,nodejs如何判断⽂件是什么编码格式
nodejs编码只⽀持utf8的编码⽅式,⽆论是打开某个⽂件或者写.js脚本都得以utf8的编码⽅式保存,不然程序⽆法运⾏,读出来的⽂件是乱码。
如果是在前台,读取⽂件是通过FileReader或者FileReaderSync这两个webAPI和input[type='file']标签来配合来完成,但是这个两个API已经包涵了判断⽂件的编码⽅式的功能,⽆论是GBK还是utf8编码的⽂件都能正确打开不出现乱码,但是nodejs就会出现这样的问题,读取gbk 和unicode编码的⽂件出现奇怪的乱码,有⼀个模块iconv-lite可以解决编码问题,但是前提是你得知道这个⽂件的编码⽅式,举个例⼦:
有⼀个gkb的⽂件叫正确查看它的⽅式如下:
var icon=require('iconv-lite');
var fs=require('fs')
var str=iconv.decode(buffer,'gbk')
console.log(str)//得到⽆乱码的内容
})
但是如果不知道⽂件的编码⽅式,那有该怎么办呢?
那就来聊⼀聊编码⽅式,⾸先UNICODE编码,UNICODE编码的⽂件⽆论内容是什么,前两个字节要不是FF FE 或者 FE FF,
utf-8头两个字节是EF BB,⾄于gbk吧,⽬前我没到判断⽅法,只能粗略的判断如果不是unicode和utf8就认为是GBK,
代码如下:
unicode文件格式
var fs=require('fs')
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')
}
})

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。