
CodepageDetectorProxy detector = CodepageDetectorProxygetInstance();
detectoradd(UnicodeDetectorgetInstance());
detectoradd(JChardetFacadegetInstance());
detectoradd(ASCIIDetectorgetInstance());
File f = new File(url);
Charset charset = detectordetectCodepage(ftoURI()toURL());
//判断是否是UTF-8编码的文件
if("UTF-8"equals(charsettoString())){
br = new BufferedReader(new InputStreamReader(new FileInputStream(url),"UTF-8"));
} else {
br = new BufferedReader(new InputStreamReader(new FileInputStream(url),"GBK"));
}
可以判断的编码有不少 楼主可以输出试试看
cpdetector_1010和 chardet (jchardet-11)这个是依赖jar包
nodejs编码只支持utf8的编码方式,无论是打开某个文件或者写js脚本都得以utf8的编码方式保存,不然程序无法运行,读出来的文件是乱码。
如果是在前台,读取文件是通过FileReader或者FileReaderSync这两个webAPI和input[type='file']标签来配合来完成,但是这个两个API已经包涵了判断文件的编码方式的功能,无论是GBK还是utf8编码的文件都能正确打开不出现乱码,但是nodejs就会出现这样的问题,读取gbk和unicode编码的文件出现奇怪的乱码,有一个模块iconv-lite可以解决编码问题,但是前提是你得知道这个文件的编码方式,举个例子:
有一个gkb的文件叫gbktxt正确查看它的方式如下:
var
icon=require('iconv-lite');
var
fs=require('fs')
fsreadFile('gbktxt',function(err,buffer){
var
str=iconvdecode(buffer,'gbk')
consolelog(str)//得到无乱码的内容
})
但是如果不知道文件的编码方式,那有该怎么办呢?
那就来聊一聊编码方式,首先UNICODE编码,UNICODE编码的文件无论内容是什么,前两个字节要不是FF
FE
或者
FE
FF,
utf-8头两个字节是EF
BB,至于gbk吧,目前我没找到判断方法,只能粗略的判断如果不是unicode和utf8就认为是GBK,
代码如下:
var
fs=require('fs')
fsreadFile('codetxt',function(err,buffer){
if(buffer[0]==0xff&&buffer[1]==0xfe){
consolelog('unicode')
}else
if(buffer[0]==0xfe&&buffer[1]==0xff){
consolelog('unicode')
}else
if(buffer[0]==0xef&&buffer[1]==0xbb){
consolelog('utf8')
}else{
consolelog('else')
}
})
你试试看这两种方式:
1、
FileStream fs = new FileStream("你的路径", FileAccessReadWrite, FileModeOpenOrCreate);
StreamReader sr = new StreamReader(fs, EncodingDefault);
srReadToEnd();
srClose();
fsClose();
2、
FileReadAllLines("你的路径", EncodingDefault);
很多种呀,具体可以分析一下 File类,
EncodingDefault一般来讲不会乱码了,如果会你其他的编码
你好,你可以利用python3的python3-magic来获得文件的编码格式。下面是对应的代码
import magic
blob = open('unknown-file')read()
m = magicopen(magicMAGIC_MIME_ENCODING)
mload()
encoding = mbuffer(blob) # "utf-8" "us-ascii" etc
文件的字符集在Windows下有两种,一种是ANSI,一种Unicode。
对于Unicode,Windows支持了它的三种编码方式,一种是小尾编码(Unicode),一种是大尾编码(BigEndianUnicode),一种是UTF-8编码。
我们可以从文件的头部来区分一个文件是属于哪种编码。当头部开始的两个字节为 FF FE时,是Unicode的小尾编码;当头部的两个字节为FE
FF时,是Unicode的大尾编码;当头部两个字节为EF BB时,是Unicode的UTF-8编码;当它不为这些时,则是ANSI编码。
按照如上所说,我们可以通过读取文件头的两个字节来判断文件的编码格式,代码如下(C#代码):
程序中SystemTextEncodingDefault是指 *** 作系统的当前 ANSI 代码页的编码。
1: public SystemTextEncoding GetFileEncodeType(string filename)
2: {
3: SystemIOFileStream fs = new SystemIOFileStream(filename, SystemIOFileModeOpen, SystemIOFileAccessRead);
4: SystemIOBinaryReader br = new SystemIOBinaryReader(fs);
5: Byte[] buffer = brReadBytes(2);
6: if(buffer[0]>=0xEF)
7: {
8: if(buffer[0]==0xEF && buffer[1]==0xBB)
9: {
10: return SystemTextEncodingUTF8;
11: }
12: else if(buffer[0]==0xFE && buffer[1]==0xFF)
13: {
14: return SystemTextEncodingBigEndianUnicode;
15: }
16: else if(buffer[0]==0xFF && buffer[1]==0xFE)
17: {
18: return SystemTextEncodingUnicode;
19: }
20: else
21: {
22: return SystemTextEncodingDefault;
23: }
24: }
25: else
26: {
27: return SystemTextEncodingDefault;
28: }
29: }
常常在Linux中 *** 作windows下的文件时,会遇到乱码的情形。常见的比如在Visual Studio 中写的C\C++程序需要放到Linux主机上编译,而程序的中文注释则显示为乱码,比较严重的是由于编码原因,linux上的编译器报错。
1、用VIM查看文件编码
在Vim 中可以直接查看文件编码
:set fileencoding
即可显示文件编码格式。
2、 改写~/vimrc 文件 如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在
~/vimrc 文件中添加以下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
3、 用ICONV文件编码转换
我们利用iconv工具对文件的编码进行转换。
iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个GBK 编码的文件转换成UTF-8编码
iconv -f GBK -t UTF-8 file1 -o file2
其中的参数的意义表示
-f From 某个编码
-o 输出到文件4、 通过记事本另存为来改变文件编码;既用windows下的记事本打开,选择另存为……,改变编码即可。
文件头,有编码格式信息的,读出来,判断
一下
如
(fs[0]
==
0xEF
&&
fs[1]
==
0xBB
&&
fs[2]
==
0xBF)
是UTF-8的
具体方法如下:
1、打开WPS表格,然后新建一个文档。
2、依次单击“数据,导入数据”,然后选择需要转换的csv文件后,单击“打开”:
3、点击直接打开 选择下一步;
4、打开的csv文件如果有乱码,我们就要选择合适的编码格式,然后下一步。
5、在文本导入向导中,选择“分隔符号”,然后单击“下一步”:
6、勾选“Tab键”和“逗号”,然后单击“下一步”。如果csv文件列分隔符是分号或者其他符号,请勾选相应的选项:
7、在数据预览中,根据数据类型,在文本导入向导的左上角选择相应的数据类型,然后单击“完成”:
以上就是关于如何获取CSV文件的编码方式全部的内容,包括:如何获取CSV文件的编码方式、js,nodejs如何判断文件是什么编码格式、怎么用C#获取任何文件的编码格式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)