C# 判断文件编码

无耐网上各种方法都有缺陷,此方法为原创,暂问发现问题。如发现请指正

public static Encoding GetFileEncodingByContent(string path)
        {
            var contentWithUTF8 = File.ReadAllText(path, Encoding.UTF8);
            var contentWithGBK = File.ReadAllText(path, Encoding.GetEncoding("GBK"));
            if (contentWithUTF8.Length < contentWithGBK.Length)
                return Encoding.UTF8;
            else if (contentWithUTF8.Length == contentWithGBK.Length)
            {
                using (var reader = new StreamReader(path, true))
                {
                    reader.Peek(); // you need this!
                    return reader.CurrentEncoding;
                }
            }
            else
                return Encoding.GetEncoding("GBK");

        }

原文地址:https://www.cnblogs.com/nanfei/p/8963277.html

时间: 2024-08-30 17:08:41

C# 判断文件编码的相关文章

判断文件编码并且替换指定字符串的方法

1 private void Replace(string oldStr, string newStr, string file) 2 { 3 FileStream fs = File.OpenRead(file); 4 //to know if this file is text file or binary file 5 byte b; 6 for (long i = 0; i < fs.Length; i++) 7 { 8 b = (byte)fs.ReadByte(); 9 if (b

如何判断java.io.File所读取的文件编码

如何判断java.io.File所读取的文件编码 问题 java中涉及到文件读取,就经常要考虑文件编码问题.虽然程序中一般都指定UTF-8编码,但是用户总可能提交各种编码的文件(特别是windows下用户),如果对这些文件不做判断就直接按照UTF-8的方式读取的话,是肯定会乱码的. 解决方案 java原生并不支持文件编码的判断,一般都是read文件的前几个字节来判断,需要自己编写工具类,判断的编码类型也比较少.最近找到了个开源的项目juniversalchardet,能比较优雅的完成这个任务.

MultipartFile文件编码判断

搜索:Java 判断文件的字符集编码 https://blog.csdn.net/top_code/article/details/8891796 但是在MultipartFile情况下,数值有些不同 有中文的ASCII 54960 GBK解码 UTF-8 59521 UTF-8解码 Unicode 65534 UNICODE解码 UTFbom+ 61371 UTF-8解码 UTF-16BE 65279 UNICODE解码 数字ASCII 24930 GBK/UTF-8解码 原文地址:https

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() 获取文件编码,f.encoding() 获取文件在内存中的编号,f.fileno() 获取文件终端类型(tty.打印机等),f.isatty() 获取文件名,f.name() 判断文件句柄是否可移动(tty等不可移动),f.seekable() 判断文件是否可读,f.readable() 判断文件是

读取txt防止读到乱码--自动根据文件编码进行读取

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

[Linux] 批量转换整个目录下的文件编码为UTF-8;

[Linux] 批量转换整个目录下的文件编码为UTF-8: #!/bin/bash - #===============================================================================# #          FILE: conv.sh#  #         USAGE: ./conv.sh #  #   DESCRIPTION: 一个支持把整个目录递归转换GB2312为UTF-8的脚本: #  #       OPTIONS: 

C#自动识别文件编码

以下代码源自:http://www.cnblogs.com/stulzq/p/6116627.html /// <summary> /// 用于取得一个文本文件的编码方式(Encoding). /// </summary> public class TxtFileEncoder { public TxtFileEncoder() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 取得一个文本文件的编码方式.如果无法在文件头

linux之系统编码,python编码,文件编码

1     前言 如果你对python2和python3的中编解码很清楚,这里我认为你很清楚. 具体参考文档: "python2 encode和decode函数说明.docx" "字符编码--从ASCII开始.docx" 以上所有文档均为本地文档. 2     Python编码 sys.getdefaultencoding(): 获取系统当前编码,这里的系统指的是python自己的内置系统,并非操作系统,即3中的python编码. sys.setdefaultenc

Java判断文件编码格式

转自:http://blog.csdn.net/zhangzh332/article/details/6719025 一般情况下我们遇到的文件编码格式为GBK或者UTF-8.由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式. 对于UTF-8编码格式的文本文件,其前3个字节的值就是-17.-69.-65,所以,判定是否是UTF-8编码格式的代码片段如下: Java代码 java.io.File f=new java.io.File("待判定的文本文件名");