读取配置文件中的中文会出现乱码的问题

大宝贱 2018-06-26 05:16:36
  
try
iniFile := TIniFile.Create(sPath);
except
ShowMessage(LoadIniFileFailed);
CloseApplication;
end;
sAppname := iniFile.ReadString('system','appname',EmptyStr);
sAppname := UTF8Decode(sAppname);

最开始系统名称显示出来是乱码,我才发现配置文件是utf8编码格式的。然后就加上了UTF8Decode来解码,这里遇到一个很奇怪的问题,汉字个数是偶数的时候没有问题,奇数的时候最后一个汉字就是乱码。查了好久也不知道哪里出问题了。用的是XE 10。请大家帮忙看看,谢谢。
...全文
1494 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
大宝贱 2018-07-02
  • 打赏
  • 举报
回复
引用 2 楼 BlueStorm 的回复:

使用TMemIniFile来代替TIniFile:

var iniFile: TMemIniFile;

iniFile := TMemIniFile.Create(sPath , TEncoding.UTF8);

正解,谢谢
doloopcn 2018-06-28
  • 打赏
  • 举报
回复
UTF8Decode

这个函数。。。。。关键的时候应该尽量不要用

用TMEMO把INI文件读出来,然后再处理
建立INI文件,最好也是用TMEMO来创建
BlueStorm 2018-06-27
  • 打赏
  • 举报
回复

var sAppname: String;
sAppname := iniFile.ReadString('system','appname',EmptyStr);
BlueStorm 2018-06-27
  • 打赏
  • 举报
回复

使用TMemIniFile来代替TIniFile:

var iniFile: TMemIniFile;

iniFile := TMemIniFile.Create(sPath , TEncoding.UTF8);
lyhoo163 2018-06-26
  • 打赏
  • 举报
回复
这一般是Win10的问题。我的浏览器,有时设置的字体,就是乱码,当重新设置汉字输入法时,就好了。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧