2012-10-15 24 views
1

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

+1

德尔福7 GUI是唯一的本地ANSI。所以你需要正确设置所有控件的字符集,并使用UTF8Encode和UTF8Decode来桥接它们和文件数据。请注意,由于只支持ANSI,所以在单个控件中将不能有多个字符集。 – Jay

回答

8

像这样:

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;