判断一个文本文件的编码格式

不同编码的文本,是根据文本的前两个字节来定义其编码格式的。定义如下:

ANSI:          无格式定义; 
Unicode:       前两个字节为FFFE; 
Unicode big endian:   前两字节为FEFF;  
UTF-8:        前两字节为EFBB; 

文件的字符集在Windows下有两种,一种是ANSI,一种Unicode。

对于Unicode,Windows支持了它的三种编码方式,一种是小尾编码(Unicode),一种是大尾编码(BigEndianUnicode),一种是UTF-8编码。

我们可以从文件的头部来区分一个文件是属于哪种编码。当头部开始的两个字节为 FF FE时,是Unicode的小尾编码;当头部的两个字节为FE FF时,是Unicode的大尾编码;当头部两个字节为EF BB时,是Unicode的UTF-8编码;当它不为这些时,则是ANSI编码。

按照如上所说,我们可以通过读取文件头的两个字节来判断文件的编码格式,代码如下(C#代码):

程序中System.Text.Encoding.Default是指操作系统的当前 ANSI 代码页的编码。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public System.Text.Encoding  GetFileEncodeType(string filename)
{
    System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
    System.IO.BinaryReader br = new System.IO.BinaryReader(fs);
    Byte[] buffer = br.ReadBytes(2);
    if(buffer[0]>=0xEF)
    {
        if(buffer[0]==0xEF && buffer[1]==0xBB)
        {
             return System.Text.Encoding.UTF8;
        }
        else if(buffer[0]==0xFE && buffer[1]==0xFF)
        {
             return System.Text.Encoding.BigEndianUnicode;
        }
        else if(buffer[0]==0xFF && buffer[1]==0xFE)
        {
             return System.Text.Encoding.Unicode;
        }
        else
        {
             return System.Text.Encoding.Default;
        }
    }
    else
    {
             return System.Text.Encoding.Default;
    }
}

判断一个文本文件的编码格式相关推荐

  1. 【转】如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)

    转自:http://blog.csdn.net/jiangqin115/article/details/42684017 UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, ...

  2. 如何判断一个文件的编码格式是gb2312还是gbk等

    GB2312-80编码的编码范围是高位0xa1-0xfe,低位是 0xa1-0xfe ,其中汉字范围为 0xb0a1 和 0xf7fe,如果只是简单地判断汉字,则只要查看高字节是否大于等于0xa1就可 ...

  3. 用windows“记事本”创建一个文本文件(hamlet.txt),其中每行包含一段英文。试读出文件的全部内容,并判断:(1)该文本文件有多少行?(2)文件中以大写字母开头的有多少行?

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 题目: 代码: 效果截图: 总结 题目: 用windows"记事本"创建一个文本文件(hamlet.txt) ...

  4. 判断包含字符当中包含小数点_Python|提取包含指定文本的行到一个文本文件(字符串或正则)...

    Python对于文本处理简单.直观. 任务:想返回一个网页的全部标题的文本行到一个文本文件. 在网页文件的源代码中,页面的标题都是用诸如 -- (后面的数字可以是1-6中任意数字)来标识的,要把这样的 ...

  5. 文件------概念、基本操作、打开文件的方式、按行读取文件内容、复制文件、文件/目录的常用管理操作、文本文件的编码格式、练习1-4

    文件的概念 文件的概念 计算机的文件,就是存储在某种长期储存设备上的一段数据 长期存储设备包括:硬盘.U盘.移动硬盘.光盘... 文件的作用 将数据长期保存下来,在需要的时候使用 文件的存储方式 在计 ...

  6. lua 读取服务器文件是否存在,Lua判断一个目录或文件是否存在的方法

    Lua判断一个目录或文件是否存在的方法 一.使用io.open Open 一下就可以了. 复制代码 代码如下: file,err=io.open("XXXX") 如果文件正常打开 ...

  7. python高效处理文件_使用Python语言高效地处理一个文本文件

    使用Python语言高效地处理一个文本文件: # -- encoding: utf-8 -- # 脚本功能:在指定的文件中查找指定的字符串 # 此脚本接受两个参数 # 参数1:指定一个文件名,在这个文 ...

  8. 分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的十个词打印出来...

    老师布置了这个大作业后,就一直感觉很头疼,因为我编程很不好,而且很长时间没有好好编程了,但是看到这个题目有似曾相识的感觉,同学提醒上个学期的编译有词法识别的程序,重新找出来看了看,有了一点识别单词的思 ...

  9. VB 判断是否文本文件

     代码如下: Option Explicit Public Function IsTextFile(Bytes() As Byte) As Boolean Dim i As Long, AscN As ...

最新文章

  1. php fpm xcache,php扩展xcache
  2. stm32mp1安装linux系统,stm32mp1linux开发环境搭建(cortex a7)
  3. 范灵俊(1983-),男,博士,中国科学院计算技术研究所工程师,信息技术战略研究中心战略研究主管,美国韦恩州立大学访问学者。...
  4. 第一阶段冲刺 第三天
  5. Docker 学习总结(71)—— Docker、Docker Compose、Docker Swarm 之间的区别
  6. SpringBoot整合quartz的一个例子
  7. 硬件检测相关工具大全
  8. case when then else end 及cheak约束
  9. java 大小写_java中如何进行大小写字母转换?
  10. 网易被裁后,68天吃透这份阿里学长甩我的Android面试笔记,竟让我收到字节跳动和小米offer
  11. 07_Python3.6+selenium2.53.6自动化测试_通过id定位百度输入框
  12. mysql 分离 实时读_MySQL深入利用Ameoba实现读写分离
  13. IOS课程期末项目报告
  14. 康有为《公车上书》纯属虚构? - 转自《爱野史网》
  15. SketchUp 2021(草图大师)新增功能
  16. Spring Cloud 统一配置
  17. 【2022前端面试】CSS手写面试题汇总(加紧收藏)
  18. NSX-T 系列:第 6 部分 - 准备配置文件
  19. cortex a53 微型计算机,2019年值得期待的5个树莓派替代品
  20. 安卓APP源码和设计报告——运动健身教学

热门文章

  1. 电脑办公技巧:他做了9小时的工作,我5秒就做完了
  2. gradle-学习笔记(2)-多项目构建
  3. 手动指定 main 函数作为入口libvcruntimed.lib
  4. 【转】UINavigationController 直接返回到第一级目录
  5. RecyclerView (一) 基础知识
  6. [转]iOS设备唯一标识探讨
  7. Oracle12C 怎样导入scott用户
  8. SharePoint 2007有性能问题? 先试试这篇.
  9. 也许,我们只需要缺憾的完美!
  10. Citrix SD-WAN 被曝远程代码执行漏洞