讀取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); }
成功!