简述:
如果要多平台兼容,这个 ini 文件必须是 UTF8 编码,否则如果这个 ini 文件里面有中文,安卓下会乱套。
问题:
TIniFile 在 WINDOWS 平台下,封装的是 WINDOWS 提供的接口。在 System.IniFiles 里面有注释:TIniFile - Encapsulates the Windows INI file interface (Get/SetPrivateProfileXXX functions)
经过测试,TIniFile 在 WINDOWS 环境下只能处理 ANSI 编码的文件。UTF16 和 UTF8 编码的都处理不了,中文会出乱码。
解决方法:
为了统一 WINDOWS 和安卓的代码,以及 INI 文件本身,把 INI 文件的编码做成 UTF8 -- 带 BOM 的 UTF8 文件。
而处理它的 INI ,采用 TMemIniFile ,实测可以解决编码和中文乱码的问题:
Ini := TMemIniFile.Create(MY_INI_FILE, TEncoding.UTF8);
又:
采用 TMemIniFile 要注意一个问题:写入后,默认不会自动保存到文件。
加上:
ini.AutoSave := True;
解决。

博客讨论了在跨平台应用中遇到的TIniFile编码问题,特别是在Windows和Android环境下处理中文字符时出现的乱码情况。文章指出TIniFile仅能处理ANSI编码的INI文件,而UTF16和UTF8编码会导致问题。为了解决这个问题,建议使用TMemIniFile,并以UTF8带BOM编码来统一文件格式。同时,提醒注意TMemIniFile在写入后不会自动保存,需要设置AutoSave属性为True以确保文件更新。
890

被折叠的 条评论
为什么被折叠?



