程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 讀寫文本文件亂碼解決方案

C# 讀寫文本文件亂碼解決方案

編輯:C#入門知識

在使用C#對文本文件讀取的時候,如果其中包含了中文,經常會出現亂碼。一般解決是在StreamReader加一個編碼,我使用的是Encoding.UTF8,一般情況下使用這個參數就可以。但是,在這次我使用UTF8卻無效。而且使用,unicode和UTF32都會使用StreamReader的EndOfStream在讀取一行之後,就會變成true。我想原因可能是使用這種編碼沒有正確讀取出換行符,使讀取一次之後就到達了文件末尾。

直到後來,看到一片資料,使用Encoding.GetEncoding("gb2312"),就解決了亂碼問題。看來需要百度一下gb2312和UTF8的區別。

 

附:原文:

在對文本文件進行讀取的時候,如果其中包含了中文,可能就會有亂碼的出現,解決方法很簡單。只需要在讀取出來的時候StreamReader加一個編碼就可以了。代碼如下:
using System.IO;
StreamReader sr = new StreamReader(fileName,Encoding.GetEncoding("gb2312"));//fileName為文件的絕對路徑

由於C#操作文件的內容網上有很多,我就不詳細說明了,下面給出兩個函數,分別用來讀取和寫入文本文件,記得引用System.IO;
/// <summary>
        /// 功能:
        /// 在指定的文件filename處生成該文件,並且以內容content來填充。
        /// </summary>
        /// <param name="filename">文件名</param>
        /// <param name="content">文件內容</param>
        public static void CreateFile(string filename,string content)
        {
            try
            {
//這個構造函數的具體含義:在指定的文件fileName處,第二個參數表示是否將內容追加到文件。如果文件存在,並且第二個參數append為false,那麼將改寫文件,如果append為true,則在末尾加入內容,如果文件不存在,則創建該文件,並且填充內容。 所以就算文件不存在,我們這樣創建文本文件也是沒有問題的。       
StreamWriter sw = new StreamWriter(filename,false,Encoding.GetEncoding("gb2312"));
                sw.Write(content);
                sw.Flush();
                sw.Close();
            }
            catch(IOException ioe)
            {
                throw ioe;
            }
        }

/// <summary>
        /// 功能:
        /// 在文件的最前面加入內容content
        /// </summary>
        /// <param name="filename">文件名</param>
        /// <param name="content">插入的內容</param>
        public static void InsertFile(string filename,string content)
        {
            try
            {
                StreamReader sr = new StreamReader(filename,Encoding.GetEncoding("gb2312"));
                content += sr.ReadToEnd();
                sr.Close();
                CreateFile(filename,content);

            }
            catch(IOException ioe)
            {
                throw ioe;
            }
        }
        /// <summary>
        /// 功能:
        /// 在文件末尾增加指定內容content
        /// </summary>
        /// <param name="filename">文件名</param>
        /// <param name="content">新增內容</param>
        public static void AppendFile(string filename,string content)
        {
            try
            {
                string filecontent = "";
                StreamReader sr = new StreamReader(filename,Encoding.GetEncoding("gb2312"));
                filecontent += sr.ReadToEnd() + content;//如

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved