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

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来自行处理。

Leave a Reply

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>