Delphi中汉字存储在TStringList变量里面变成乱码

taohis 2016-04-02 09:40:26
Delphi中汉字存储在TStringList变量里面,然后存为txt文件就会自动变成乱码了,提取的时候居然也是乱码,请问有啥方法可以解决的,有劳贴出样列,谢谢

我写的代码如下:
var
Listmsg : TStringList;
TempStr : string;
begin
Listmsg := TStringList.Create;

TempStr := '您好';
Listmsg.Add(TempStr);
Listmsg.SaveToFile('C:\11.txt');
end;

这句话执行后在C盘产生的11.txt文件打开之后显示的不是“您好”而是一个特殊符号了,请问这个该如何解决呢,谢谢赐教!
...全文
1933 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
victor_yang 2016-04-22
  • 打赏
  • 举报
回复
var FileName :string; // 用来存储费用明细的文件名 ListMX :TStrings; //关键是改这里!!!!! begin ListMX:=TStringList.Create; TableMX.First; while not TableMX.Eof do begin // 参数原则:医院项目编码|规格|单位| // 单价|数量|包装数量|总金额|自付比例| TempStr:=''; TempStr:=TableMX.FieldByName('XMBH').AsString+'|'+ TableMX.FieldByName('GG').AsString+'|'+ TableMX.FieldByName('XMDW').AsString+'|'+ // 注:单位部分,都是汉字方式的 TableMX.FieldByName('XMSJ').AsString+'|'+ FormatFloat('0.00',TableMX.FieldByName('XMSL').AsFloat)+'|'+ '1|'+ FormatFloat('0.00',TableMX.FieldByName('XMJE').AsFloat)+'|'+ TableMX.FieldByName('YBBL').AsString+'|'; ShowMessage(TempStr); ListMX.Add(TempStr); TableMX.Next; end; //将明细信息保存成文件方式 FileName:='C:\yblog\MX.txt'; DeleteFile(FileName); ListMX.SaveToFile(FileName); ListMX.Free; end;
  • 打赏
  • 举报
回复
保存时指出字符编码: Listmsg.SaveToFile('C:\11.txt', TEncoding.Unicode); 即可。
yuetianbao 2016-04-08
  • 打赏
  • 举报
回复
你再做一个正常txt文件,Load一下然后在程序里显不看正常不,如果也不正常就说明Delphi字符设置问题。
道玄希言 2016-04-06
  • 打赏
  • 举报
回复
你用的是delphi的哪个版本? 2010 或以后版本么? 如果是 2010 之前的版本, 可用 TNT 那套控件, 里面有个TTntStringList 的试试.
xiaoyongxiao 2016-04-06
  • 打赏
  • 举报
回复
你的操作系统是64位的,你的DELPHI编译出来的程序是32位的,
doloopcn 2016-04-05
  • 打赏
  • 举报
回复
用记事本打开文件,然后在“另存为”菜单中,看右下角显示的编码是什么,一般来说应该是ANSI,如果不是,你的DELPHI的默认内码有问题或者是你系统的默认内码有问题
taohis 2016-04-04
  • 打赏
  • 举报
回复
我给简化了版本如下,也是一样汉字部分乱码了: var ListMsg :TStringList; TempStr :string; begin ListMsg:=TStringList.Create; TempStr:='479||支|002|002|0.39|1.00|1|0.39|0|'; ListMsg.Add(TempStr); TempStr:='582||支|002|002|0.25|1.00|1|0.25|0|'; ListMsg.Add(TempStr); ListMsg.SaveToFile('C:\11.txt'); ListMsg.Free; end;
taohis 2016-04-04
  • 打赏
  • 举报
回复
var FileName :string; // 用来存储费用明细的文件名 ListMX :TStringList; begin ListMX:=TStringList.Create; TableMX.First; while not TableMX.Eof do begin // 参数原则:医院项目编码|规格|单位| // 单价|数量|包装数量|总金额|自付比例| TempStr:=''; TempStr:=TableMX.FieldByName('XMBH').AsString+'|'+ TableMX.FieldByName('GG').AsString+'|'+ TableMX.FieldByName('XMDW').AsString+'|'+ // 注:单位部分,都是汉字方式的 TableMX.FieldByName('XMSJ').AsString+'|'+ FormatFloat('0.00',TableMX.FieldByName('XMSL').AsFloat)+'|'+ '1|'+ FormatFloat('0.00',TableMX.FieldByName('XMJE').AsFloat)+'|'+ TableMX.FieldByName('YBBL').AsString+'|'; ShowMessage(TempStr); ListMX.Add(TempStr); TableMX.Next; end; //将明细信息保存成文件方式 FileName:='C:\yblog\MX.txt'; DeleteFile(FileName); ListMX.SaveToFile(FileName); ListMX.Free; end; 以上是原始代码,showmessage部分显示的那个单位是正常的,可是只要添加到List里面再保存成文件单位就成乱码了,其他的都没问题
taohis 2016-04-04
  • 打赏
  • 举报
回复
是的呢,原始代码就是那个汉字部分改了一下呢,我就是将记录保存成文件然后供人家提取呢,就是这个汉字总是乱码了
lyhoo163 2016-04-04
  • 打赏
  • 举报
回复
此问题,从未遇到。从代码看,不会出现此问题的。 原始代码是这样吗?
  • 打赏
  • 举报
回复
你用什么查看的11.txt?可能只是显示的问题。

16,747

社区成员

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

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