C#: 判断txt文件的编码格式

public static Encoding GetTextEncoding(string filePath)
        {
            FileStream fs = new FileStream(filePath, FileMode.Open);
            byte[] buff = new byte[10];
            int result = fs.Read(buff, 0, 10);
            if (result > 3)
            {
                if (buff[0] == 239 && buff[1] == 187 && buff[2] == 191)
                {// utf-8
                    return Encoding.UTF8;
                }
                else if (buff[0] == 254 && buff[1] == 255)
                {// big endian unicode
                    return Encoding.BigEndianUnicode;
                }
                else if (buff[0] == 255 && buff[1] == 254)
                {// unicode
                    return Encoding.Unicode;
                }
                else if (isUtf8(buff))
                {// utf-8
                    return Encoding.UTF8;
                }
                else
                {// ansi
                    return Encoding.Default;
                }
            }
            return null;
        }

        // 110XXXXX, 10XXXXXX
        // 1110XXXX, 10XXXXXX, 10XXXXXX
        // 11110XXX, 10XXXXXX, 10XXXXXX, 10XXXXXX
        private static bool isUtf8(byte[] buff)
        {
            for (int i = 0; i < buff.Length; i++)
            {
                if ((buff[i] & 0xE0) == 0xC0)    // 110x xxxx 10xx xxxx
                {
                    if ((buff[i + 1] & 0x80) != 0x80)
                    {
                        return false;
                    }
                }
                else if ((buff[i] & 0xF0) == 0xE0)  // 1110 xxxx 10xx xxxx 10xx xxxx
                {
                    if ((buff[i + 1] & 0x80) != 0x80 || (buff[i + 2] & 0x80) != 0x80)
                    {
                        return false;
                    }
                }
                else if ((buff[i] & 0xF8) == 0xF0)  // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
                {
                    if ((buff[i + 1] & 0x80) != 0x80 || (buff[i + 2] & 0x80) != 0x80 || (buff[i + 3] & 0x80) != 0x80)
                    {
                        return false;
                    }
                }
            }
            return true;
        }

参考:

http://blog.csdn.net/xt_chaoji/article/details/7345052

http://blog.csdn.net/nocml/article/details/8106068

时间: 2024-10-02 21:26:15

C#: 判断txt文件的编码格式的相关文章

C# 判断txt文件编码格式

/// <summary> /// 获取文件的编码格式 /// </summary> public class EncodingType { /// <summary> /// 给定文件的路径,读取文件的二进制数据,判断文件的编码类型 /// </summary> /// <param name=“FILE_NAME“>文件路径</param> /// <returns>文件的编码类型</returns> pu

解决python3 字符串写入txt文件/excel文件 中文乱码

python3把字符串写入txt文件,控制台输出正常,打开txt文件乱码.程序如下 with open(r'.txt', 'a',encoding='utf-8') as f: results = x.get_text() print(type(results)) print(results) f.write(results + "\n") 网络上的教程中产生乱码的原因是没有加encoding='utf-8',我加了却还是乱码.是因为txt文件的编码格式默认的是ANSI,一个简单的解决

上传txt文件编码格式判断(文本乱码解决方法)

说明 通过ajax或者浏览上传文本文件,上传时候c#处理时候因为文本格式的创建不同,在获取内容时候会出现中文乱码. 解决方法 通过上传的文件流,判断文件的编码格式,在使用对应的编码格式获取文本内容 #region 通过给定的文件流,判断文件的编码类型        /// <summary>        /// 通过给定的文件流,判断文件的编码类型        /// </summary>        /// <param name=“fs“>文件流</pa

批量将ANSI文本txt文件转换成UTF8编码格式 (vbs方法)

准备两个文件即可 conv.vbs run.bat conv.vbs源码 '用法:将要更改编码的所有文件放到同一个文件夹中,将文件夹拖到该vbs上,输入要转换成的字符编码 Dim fso,fd,fl,f,fdpath,charset On Error Resume Next If WScript.Arguments.Length>=1 Then fdpath = WScript.Arguments(0) Else fdpath = InputBox("E:\xunlian\新增加的训练集&

Selenium+Python参数化:读取TXT文件

概述 从Selenium模块化一文中,可以看出参数化的必要性,本文来介绍下读取外部txt文件的方法. 如何打开文件 打开文件有以下两个函数可以应用: 1.open(file_name,access_mode) file_name: 文件路径及名称: access_mode :访问方式,具体参数如下,,未提供参数,则默认为r: r:表示读取: w:表示写入: a:表示添加: +: 表示读写: b:表示2进制访问; 2.file函数 file()内建函数它的功能等于open(),如下根据文档说明可知

word和.txt文件转html 及pdf文件, 使用poi jsoup itext心得

word和.txt文件转html 及pdf文件, 使用poi jsoup  itext心得本人第一次写博客,有上面不足的或者需要改正的希望大家指出来,一起学习交流讨论.由于在项目中遇到了这一个问题,在网上也找了很多方法,感觉千篇一律,总有一些问题,因此总结出word转html和pdf文件使用方法.虽然poi功能不是很强大,但毕竟不依靠本地office软件,同样还有一种方式使用jacob也可以将word转html,不过这个方式要依靠本地office,而且只能在windows平台下,不支持unix系

java 读取不同编码的txt文件 中文乱码二

之前的文章中判断txt的编码,发现utf-8无BOM编码格式无法检测出来. 当无法检测时(返回的code为空时),再使用一下方法则可以了. /** * 传入一个文件(File)对象,检查文件编码 * * @param file * File对象实例 * @return 文件编码,若无,则返回null * @throws FileNotFoundException * @throws IOException */ public String guessFileEncoding(File file)

java读取TXT文件的方法

java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了.接下来需要解读成乙方可以理解的东西 既然你使用了FileInputStream().那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据 解读完成后要输出

Java后台按行读取txt文件

java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了.接下来需要解读成乙方可以理解的东西 既然你使用了FileInputStream().那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据 解读完成后要输出