如果你用Delphi处理文件发现有乱码,不妨考虑一下编码的问题

最近编写了一个间的的程序,主要的代码是

begin
  AssignFile(rFile,'xyz.csv');
  AssignFile(wFile,'111.txt');
  reset(rFile);
  rewrite(wFile);
  s:='';
  i:=0;
  while NOT eof(rFile) do
    begin
      readln(rFile,s);
      writeln(wFile,s);
    end;
  closefile(rFile);
  closefile(wFile);
end.

 

运行之后发现结果竟然并非预期,这个是原始文件内容

org

这是运行之后的结果

fail

多次查找无法确定原因,后来在想到可能是 unicode导致的问题,找到了下面的文章

http://stackoverflow.com/questions/14232900/unicode-text-file-output-differs-between-xe2-and-delphi-2009

但是因为 Delphi2010 并没有 AssignFile(rFile,'',CP_UTF8); 这样的Override,所以直接升级到XE4.再次运行现象消失问题解决。因此,如果你在读取文本文件时遇到奇怪的无法解释的问题,不妨先考虑是否为 unicode 导致。解决方法上,最简单就是升级Delphi版本,此外还可以使用MemoryStream来自行处理。

发表评论

电子邮件地址不会被公开。 必填项已用*标注