Heim >Backend-Entwicklung >C#.Net-Tutorial >C#-Lösung zum Lesen verstümmelter chinesischer Dateien

C#-Lösung zum Lesen verstümmelter chinesischer Dateien

大家讲道理
大家讲道理Original
2016-11-10 16:30:151680Durchsuche

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 verwendet 3 Parameter. Die meisten Chinesen sind gb2312. Wenn es nicht utf-8 ist, verwenden Sie gb2312.


Das System verfügt über eine utf-Erkennung , siehe Wie folgt

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 = new UTF32Encoding(false, true);
                this.CompressBuffer(4);
                flag = true;
            }
        }
        else if (((this.byteLen >= 3) && (this.byteBuffer[0] == 0xef)) && ((this.byteBuffer[1] == 0xbb) && (this.byteBuffer[2] == 0xbf)))
        {
            this.encoding = Encoding.UTF8;
            this.CompressBuffer(3);
            flag = true;
        }
        else if ((((this.byteLen >= 4) && (this.byteBuffer[0] == 0)) && ((this.byteBuffer[1] == 0) && (this.byteBuffer[2] == 0xfe))) && (this.byteBuffer[3] == 0xff))
        {
            this.encoding = new UTF32Encoding(true, true);
            this.CompressBuffer(4);
            flag = true;
        }
        else if (this.byteLen == 2)
        {
            this._detectEncoding = true;
        }
        if (flag)
        {
            this.decoder = this.encoding.GetDecoder();
            this._maxCharsPerBuffer = this.encoding.GetMaxCharCount(this.byteBuffer.Length);
            this.charBuffer = new char[this._maxCharsPerBuffer];
        }
    }
}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn