2012-10-15 26 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;