FireMonkey 多平台下 TIniFile 读 ini 文件要注意

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

简述:

如果要多平台兼容,这个 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;

解决。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值