|
本帖最后由 goomoo 于 2013-11-7 19:56 编辑
用 TIniPropStorage 保存的 ini 文件,如果文件中有中文,并且用记事本编辑后保存,再用 TIniPropStorage 读入,就出现乱码问题。文件保存的格式是 utf8。
用 TXMLPropStorage 保存的 xml 文件,如果有中文,则直接是乱码;用 TXMLPropStorage 再读入时,最后一个文字变成两个问号。
大家有遇到过这样的情况吗? 如何解决呢?
ini的代码:
procedure TForm1.btnSaveClick(Sender: TObject);
begin
self.ini.IniSection:='databaseConfig';
self.ini.WriteString('host',self.leHost.Text);
self.ini.WriteString('port',self.lePort.Text);
self.ini.WriteString('username',self.leUsername.Text);
self.ini.WriteString('password',self.lePassword.Text);
self.ini.WriteString('dbname',self.leDBName.Text);
self.ini.IniSection:='appInfo';
self.ini.WriteString('appTitle','中文软件标题');
self.ini.WriteString('appVersion','1.2.3.4');
self.ini.WriteString('CompanyTel','18971688888');
self.ini.Save();
end;
procedure TForm1.loadConfigI;
begin
self.ini.IniSection:='databaseConfig';
self.leHost.Text:=self.ini.ReadString('host','localhost');
self.lePort.Text:=self.ini.ReadString('port','3306');
self.leUsername.Text:=self.ini.ReadString('username','root');
self.lePassword.Text:=self.ini.ReadString('password','');
self.leDBName.Text:=self.ini.ReadString('dbname','');
self.ini.IniSection:='appInfo';
ShowMessage(self.ini.ReadString('appTitle',''));
end;
////////////////////////////////////////////////////////////////////////////
xml的代码
procedure TForm1.saveConfig;
begin
self.xmlps.RootNodePath:='dbconfig';
self.xmlps.WriteString('host',self.leHost.Text);
self.xmlps.WriteString('username',self.leUsername.Text);
self.xmlps.WriteString('dbname',self.leDBName.Text);
self.xmlps.RootNodePath:='appinfo';
self.xmlps.WriteString('appTitle',self.leAppTitle.Text);
self.xmlps.WriteString('appVersion',self.leAppVersion.Text);
self.xmlps.Save();
end;
procedure TForm1.loadConfig;
begin
self.xmlps.RootNodePath:='dbconfig';
self.leHost.Text:=self.xmlps.ReadString('host','');
self.leUsername.Text:=self.xmlps.ReadString('username','');
self.leDBName.Text:=self.xmlps.ReadString('dbname','');
self.xmlps.RootNodePath:='appinfo';
self.leAppTitle.Text:=self.xmlps.ReadString('appTitle','');
self.leAppVersion.Text:=self.xmlps.ReadString('appVersion','');
end;
|
|