写入Unicode(UTF-8)文本文件

如何在 Delphi 中编写 Unicode 文本文件?

目前我只使用AssignFile,RewriteFileWriteln,但这不会写 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,那也没关系。


忘掉AssignFileResetRewriteAppendCloseFile等。


以上是写入Unicode(UTF-8)文本文件的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>