【高分求解】如何获取文件的编码

问题描述

在进行文本文件(.txt)的读取时,需要指定其编码,但现实中我们往往不知道所处理文件的编码(例如这个文件是通过OpenFileDialog选取的,或者面对大量文件,有各种各样的编码格式)所以我们需要获取指定文件的编码我试图用StreamReader(string,Encoding,true)来读取文件,但我发现竟然跟StreamReader(string,Encoding)是一样的(不解中....)我们打开一个文本文件,点另存为,可以看到该文件的编码.既然系统都可以获得文件的编码,想必通过编程也可以吧?

解决方案

解决方案二:
通常都是判斷文件開頭的幾個字節.FFFE开头的是“unicode文件”,FEFF开头的是“unicodebigendian文件”,EFBBBF开头的是“utf-8文件"。其他的,就要猜了,通常如果不是上述三種,大多人會直接使用System.Text.Encoding.Default來讀取,就是本機默認字符集
解决方案三:
简单的判断文件编码是否为:UnicodeUnicodeBIGUTF-8publicclassEncodingType{publicstaticSystem.Text.EncodingGetType(stringFILE_NAME){FileStreamfs=newFileStream(FILE_NAME,FileMode.Open,FileAccess.Read);System.Text.Encodingr=GetType(fs);fs.Close();returnr;}publicstaticSystem.Text.EncodingGetType(FileStreamfs){byte[]Unicode=newbyte[]{0xFF,0xFE};byte[]UnicodeBIG=newbyte[]{0xFE,0xFF};byte[]UTF8=newbyte[]{0xEF,0xBB,0xBF};BinaryReaderr=newBinaryReader(fs,System.Text.Encoding.Default);byte[]ss=r.ReadBytes(3);r.Close();//编码类型Coding=编码类型.ASCII;if(ss[0]-#62;=0xEF){if(ss[0]==0xEF-#38;-#38;ss[1]==0xBB-#38;-#38;ss[2]==0xBF){returnSystem.Text.Encoding.UTF8;}elseif(ss[0]==0xFE-#38;-#38;ss[1]==0xFF){returnSystem.Text.Encoding.BigEndianUnicode;}elseif(ss[0]==0xFF-#38;-#38;ss[1]==0xFE){returnSystem.Text.Encoding.Unicode;}else{returnSystem.Text.Encoding.Default;}}else{returnSystem.Text.Encoding.Default;}}}
解决方案四:
網上搜索的一個類,可以大概判斷publicclassEncodingType{publicstaticSystem.Text.EncodingGetType(stringFILE_NAME){FileStreamfs=newFileStream(FILE_NAME,FileMode.Open,FileAccess.Read);System.Text.Encodingr=GetType(fs);fs.Close();returnr;}publicstaticSystem.Text.EncodingGetType(FileStreamfs){byte[]Unicode=newbyte[]{0xFF,0xFE};byte[]UnicodeBIG=newbyte[]{0xFE,0xFF};byte[]UTF8=newbyte[]{0xEF,0xBB,0xBF};BinaryReaderr=newBinaryReader(fs,System.Text.Encoding.Default);byte[]ss=r.ReadBytes(3);r.Close();//编码类型Coding=编码类型.ASCII;if(ss[0]>=0xEF){if(ss[0]==0xEF&&ss[1]==0xBB&&ss[2]==0xBF){returnSystem.Text.Encoding.UTF8;}elseif(ss[0]==0xFE&&ss[1]==0xFF){returnSystem.Text.Encoding.BigEndianUnicode;}elseif(ss[0]==0xFF&&ss[1]==0xFE){returnSystem.Text.Encoding.Unicode;}else{returnSystem.Text.Encoding.Default;}}else{returnSystem.Text.Encoding.Default;}}}

解决方案五:
帮顶下

时间: 2024-11-01 06:19:13

【高分求解】如何获取文件的编码的相关文章

高分求解:上传文件失败

问题描述 各位高手,我在服务器的IIS上部署了一个网站,通过windowsapi上传文件到网络路径失败,只能上传到本地路径,怎么解决呢?系统环境是windowsserver2008R2standardSP164位操作系统,IIS版本7.0 解决方案 解决方案二:通过windowsapi上传文件到网络路径放出你的代码来,没听说"上传"功能还需要调用API的解决方案三:谢谢回复,代码如下:///<summary>默认文件上传///</summary>publicvo

获取文件字符集(或文件编码) De 工具类

http://yongboy.iteye.com/blog/266501 依赖一个 Mozilla 开源的 JAR 包.基于统计来进行字符集探查的,所以并不是百分百准确,并且需要字符串样本足够长. package org.mozilla.intl.chardet; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundE

jChardet探测文件字符编码

package test; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.mozilla.intl.chardet.nsDetector; import org.mozilla.intl.chardet.nsICh

Java如何获取文件编码格式

1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK.  按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式.其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种常见的编码就可以了:GBK和UTF-8.由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编

Asp获取文件md5值

中介交易 SEO诊断 淘宝客 云主机 技术大厅 网上asp加密字符的MD5很多,也很普遍,但是对文件进行md5的确很少,因为受到asp语言本身的限制.我们知道字符串的md5可以对明文进行不可逆的加密,从而保证数据储存或者传送的安全性.同样的,对文件进行md5加密也是为了保证在网络传送时不被修改和校验,另外还有一个用途就是在个人站点里面的应用:可以保证上传的图片或文件具有唯一性.原理是,上传到服务器之后,同时在数据库中记录该上传文件的md5值,这样在下次传同样文件的时候,可以通过查询数据库是否是相

c++-Qt获取文件信息后崩溃结束,内附错误,求解决方案

问题描述 Qt获取文件信息后崩溃结束,内附错误,求解决方案 是自己做的媒体播放器,添加文件点确定后就会崩溃,调试的时候给出的这个框,求解 解决方案 段错误,你的代码中没有正确处理好指针,估计有访问空指针等问题 解决方案二: 查看是不是有指针的非法使用,一般这个错误很多都是指针非法使用导致.

C#如何自动识别文件的编码_C#教程

前言 C#中识别文件的编码是一个头疼的问题,最近在做导入微信商户后台退款数据时,无论怎么设置编码导出来都是乱码,后来在网上找了这个识别文件编码的代码,感觉不错.最后识别出来是gb2312,看来我还是太渣了,只能吃土了,竟然忘记了这个编码. 下面话不多说,上代码. /// <summary> /// 用于取得一个文本文件的编码方式(Encoding). /// </summary> public class TxtFileEncoder { public TxtFileEncoder

vc++-求解压tgz文件的解决方案

问题描述 求解压tgz文件的解决方案 10C 最近在做一个图像处理的项目,需要在程序里解压tgz文件,项目用的是vc实现的,请各位大神帮帮忙 解决方案 属性(资源)文件乱码问题的解决方案 解决方案二: 还是需要用开源的7-zip吧,参考:http://blog.csdn.net/Wahuqeirdace/article/details/13751701

应用PHP文件函数获取文件信息实例教程

上一篇PHP目录函数教程中主要介绍了目录(文件夹)读取,遍历的方法,但最基本的文件管理系统同时涉及到文件信息.文件大小读取以便检查磁盘使用情况,也需要获取文件修改或访问时间,删除或移动整理文件的功能,这些都需要通过PHP文件函数同文件系统交互. 基本PHP文件函数介绍 PHP文件函数dirname()和basename()的区别 dirname()获得文件目录路径的目录部分,而basename()获得不带目录的文件名 如何通过PHP文件函数获得文件基本信息? 之前介绍了PHP目录读取实例,我们只