C# UTF-8文件帶BOM和不帶BOM文件的轉換


讀取INI文件使用的是GetPrivateProfileString方法,自己讀寫ini文件沒有問題。

調用C++的API對同一個ini文件進行處理后,發現首個Section的值讀不出來;發現是API更改了ini文件格式。

原本C#進行讀寫的ini文件是UTF-8不帶BOM的格式,C++ API寫值后將ini文件格式改為UTF-8帶BOM。

API那邊沒有辦法更改,GetPrivateProfileString我也不知道該怎么設定成帶BOM的格式;

只能自己轉換文件格式,轉換方法如下:

            //以UTF-8帶BOM格式讀取文件內容
            Encoding end = new UTF8Encoding(true);
            string str = string.Empty;
            using (StreamReader sr = new StreamReader(ini.Path, end))
            {
                str = sr.ReadToEnd();
            }
            //以UTF-8不帶BOM格式重新寫入文件
            end = new UTF8Encoding(false);
            using (StreamWriter sw = new StreamWriter(ini.Path, false, end))
            {
                sw.Write(str);
            }

成功!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM