如何将Memo或RichEdit保存为UTF 8文本文件?

时间:2012-10-15 15:58:51

标签: delphi delphi-7

我正在使用Delphi 7,我编写了一个程序,从用户那里获取一些信息,将来自几个编辑框和备忘录的信息以及备忘录中的其他输入组件组合在一起。如何将此备忘录另存为UTF 8文本文件? 我从上一个程序的用户那里收到了一些没有utf问题解决方案的文件,现在,当我打开输出文件时,我看到???? (如你所知!)而不是不同的语言字符,这些不可恢复,是吗?

1 个答案:

答案 0 :(得分:9)

像这样:

const
  UTF8BOM: array[0..2] of Byte = ($EF, $BB, $BF);
var
  UTF8Str: UTF8String;
  FS: TFileStream;
begin
  UTF8Str := UTF8Encode(Memo1.Text);

  FS := TFileStream.Create('C:\path to\file.txt', fmCreate);
  try
    FS.WriteBuffer(UTF8BOM[0], SizeOf(UTF8BOM));
    FS.WriteBuffer(PAnsiChar(UTF8Str)^, Length(UTF8Str));
  finally
    FS.Free;
  end;
end;