C#讀取中文文件出現(xiàn)亂碼的解決方法
本文實例講述了C#讀取中文文件出現(xiàn)亂碼的解決方法。分享給大家供大家參考。具體分析如下:
先來看這段代碼:
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個參數(shù) 最后一個自動檢測utf-8,中文大部分是gb2312,如果不是utf-8,就用gb2312
系統(tǒng)自帶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 = 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]; } } }
希望本文所述對大家的C#程序設(shè)計有所幫助。
相關(guān)文章
Unity UGUI的LayoutElement布局元素組件介紹使用示例
這篇文章主要為大家介紹了Unity UGUI的LayoutElement布局元素組件介紹使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07C# 開發(fā)(創(chuàng)藍(lán)253)手機(jī)短信驗證碼接口的實例
下面小編就為大家分享一篇C# 開發(fā)(創(chuàng)藍(lán)253)手機(jī)短信驗證碼接口的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01c# NPOI 如何在指定單元格導(dǎo)入導(dǎo)出圖片
這篇文章主要介紹了c# NPOI 如何在指定單元格導(dǎo)入導(dǎo)出圖片,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03利用C#/VB.NET實現(xiàn)將PDF轉(zhuǎn)為Word
眾所周知,PDF 文檔支持特長文件,集成度和安全可靠性都較高,可有效防止他人對 PDF 內(nèi)容進(jìn)行更改,所以在工作中深受大家喜愛。本文將分為兩部分介紹如何以編程的方式將 PDF 轉(zhuǎn)換為 Word,需要的可以參考一下2022-12-12