js,nodejs如何判断文件是什么编码格式 |
您所在的位置:网站首页 › nodejs怎么读取文件 › 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') } }) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |