最近编写了一个间的的程序,主要的代码是
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.
运行之后发现结果竟然并非预期,这个是原始文件内容
这是运行之后的结果
多次查找无法确定原因,后来在想到可能是 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来自行处理。