当前位置:编程学习 > C#/ASP.NET >>

如何判断一个字符串是什么编码

    如何判断一个字符串是UTF8还是GB2312编码? --------------------编程问答-------------------- 这是不可能实现的任务!!!但根据文件可能判断编码类型 --------------------编程问答-------------------- 目前 没有最好的方法~
有人这样写 ::

public class EncodingType
//编码问题目前为止,基本上没人解决,就连windows的IE的自动识别有时还识别错编码呢
//如果文件有BOM则判断,如果没有就用系统默认编码,缺点:没有BOM的非系统编码文件会显示乱码。
//调用方法: EncodingType.GetType(filename)
//来源:http://blog.csdn.net/listlofusage/archive/2007/02/10/1506900.aspx
{
    public static System.Text.Encoding GetType(string FILE_NAME)
    {
        FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);
        System.Text.Encoding r = GetType(fs);
        fs.Close();
        return r;
    }
    public static System.Text.Encoding GetType(FileStream fs)
    {
        /*byte[] Unicode=new byte[]{0xFF,0xFE};
        byte[] UnicodeBIG=new byte[]{0xFE,0xFF};
        byte[] UTF8=new byte[]{0xEF,0xBB,0xBF};*/

        BinaryReader r = new BinaryReader(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)
            {
                return System.Text.Encoding.UTF8;
            }
            else if (ss[0] == 0xFE && ss[1] == 0xFF)
            {
                return System.Text.Encoding.BigEndianUnicode;
            }
            else if (ss[0] == 0xFF && ss[1] == 0xFE)
            {
                return System.Text.Encoding.Unicode;
            }
            else
            {
                return System.Text.Encoding.Default;
            }
        }
        else
        {
            return System.Text.Encoding.Default;
        }
    }


--------------------编程问答-------------------- http://blog.csdn.net/xianfajushi/archive/2009/11/27/4734699.aspx --------------------编程问答--------------------
System.Text.Encoding.Default.GetBytes
--------------------编程问答-------------------- 没想到这么复杂,汗
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,