日期:2014-05-17  浏览次数:20892 次

c# 读中文文件乱码 终极终极解决

                FileStream aFile = new FileStream(SingleFile, FileMode.Open);

                StreamReader sr = new StreamReader(aFile, Encoding.GetEncoding("gb2312"), true);
                string FileContent = sr.ReadToEnd();
                aFile.Close();
                ProcessData Pd = new ProcessData();

                Pd.ProceData(FileContent);


StreamReader 使用3个参数 最后一个自动检测utf-8,中文大部分是gb2312,如果不是utf-8,就用gb2312



系统自带utf 检测 ,见如下



        private void DetectEncoding()
        {
            if (this.byteLen >= 2)
            {
                this._detectEncoding = false;
                bool flag = false;
                if ((this.byteBuffer[0] == 0xfe) && (this.byteBuffer[1] == 0xff))
                {
                    this.encoding = new UnicodeEncoding(true, true);
                    this.CompressBuffer(2);
                    flag = true;
                }
                else if ((this.byteBuffer[0] == 0xff) && (this.byteBuffer[1] == 0xfe))
                {
                    if (((this.byteLen < 4) || (this.byteBuffer[2] != 0)) || (this.byteBuffer[3] != 0))
                    {
                        this.encoding = new UnicodeEncoding(false, true);
                        this.CompressBuffer(2);
                        flag = true;
                    }
                    else
                    {
                        this.encoding = ne