如何将文本保存为UTF-8格式 ( 积分: 5 )

  • 主题发起人 主题发起人 冬月
  • 开始时间 开始时间

冬月

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将读入MEMO或RICHEDIT中的文本保存为UTF-8的文本格式
 
Utf8Encode
Utf8Decode
函数
 
AnsiToUtf8()
 
const
UTF8BOM = #$EF#$BB#$BF;

Procedure SaveToUtf8File(AnsiStr : String; FileName : String);
var
hFile : THandle;
begin
AnsiStr := UTF8BOM + AnsiToUtf8(AnsiStr);
hFile := FileCreate(FileName);
FileWrite(hFile, PChar(AnsiStr)^, Length(AnsiStr));
FileClose(hFile);
end;

Function LoadFromUtf8File(FileName:String):String;
var
hFile : THandle;
begin
Result := '';
hFile := FileOpen(FileName, fmOpenRead or fmShareDenyNone);
SetLength(Result, GetFileSize(hFile, nil));
FileRead(hFile, PChar(Result)^, Length(Result));
FileClose(hFile);
if Copy(Result,1,3) = UTF8BOM then
Result := Copy(Result, 4,Length(Result));
Result := Utf8ToAnsi(Result);
end;
//使用方式如下面例子
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveToUtf8File('汉字Hanzi','c:/aaa.txt');
ShowMessage(LoadFromUtf8File('c:/aaa.txt'));
end;
 
用TMemory.SaveToFile。
直接可以writebuffer就可以了。
var s:string; us:UTF8String;
f:Tmemorystream;

us:=ANSIToUTF8(s);
f.write(us,length(us));
f.savetofile(xxxx);
 
接受答案了.
 
后退
顶部