在聲明時加上參數CharSet = CharSet.Unicode
[DllImport("kernel32", CharSet = CharSet.Unicode)]
CharSet: 指示如何向方法封送字符串參數,並控制名稱重整。
最后,附上讀寫ini文件,解決出現亂碼的代碼
[DllImport("kernel32", CharSet = CharSet.Unicode)] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32", CharSet = CharSet.Unicode)] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); /// <summary> ///讀取ini文件數據 /// </summary> /// <param name="Section">段</param> /// <param name="Key">鍵名</param> /// <param name="def">默認值</param> /// <param name="filePath">文件路徑</param> /// <returns>讀出內容</returns> public static string ReadValueFromIniFile(string Section, string Key, string def, string filePath) { StringBuilder temp = new StringBuilder(4096); int i = GetPrivateProfileString(Section, Key, def, temp, 4096, filePath); return temp.ToString(); } /// <summary> /// 寫入數據到ini文件 /// </summary> /// <param name="Section">段</param> /// <param name="Key">鍵名</param> /// <param name="Value">鍵值</param> /// <param name="filePath">文件路徑</param> public static void WriteValueFromIniFile(string Section, string Key, string Value, string filePath) { WritePrivateProfileString(Section, Key, Value, filePath); }