写入Unicode(UTF-8)文本文件
如何在 Delphi 中编写 Unicode 文本文件?
目前我只使用AssignFile,RewriteFile和Writeln,但这不会写 Unicode 字符。
回答
您根本不应该使用旧的 Pascal I/O。这在 80 年代就完成了它的工作,但今天已经过时了。
本世纪,您可以使用TStringList. 这在 Delphi 中非常常用。例如,VCL 控件用于TStrings访问备忘录的文本行和组合框或列表框的项目。
var SL := TStringList.Create;
try
SL.Add('?cos(x)dx = sin(x) + C');
SL.Add('¬(a ? b) ? ¬a ? ¬b');
SL.SaveToFile(FileName, TEncoding.UTF8);
finally
SL.Free;
end;
对于更高级的需求,您可以使用TStreamWriter:
var SW := TStreamWriter.Create(FileName, False, TEncoding.UTF8);
try
SW.WriteLine('?????');
SW.WriteLine('?????');
finally
SW.Free;
end;
对于非常简单的需求,有以下新TFile方法IOUtils.pas:
var S := '? is aromatic.';
TFile.WriteAllText(FileName, S, TEncoding.UTF8); // string (possibly with linebreaks)
var Lines: TArray<string>;
Lines := ['? is cold.', '? is hot.'];
TFile.WriteAllLines(FileName, Lines, TEncoding.UTF8); // string array
如您所见,所有这些现代选项都允许您指定 UTF8 作为编码。如果您更喜欢使用其他编码,例如 UTF16,那也没关系。
忘掉AssignFile,Reset,Rewrite,Append,CloseFile等。