读书人

delphi保文本文件怎么选择编码UTF-8格

发布时间: 2013-09-06 10:17:17 作者: rapoo

delphi保文本文件如何选择编码UTF-8格式?
我通过memo1.SaveToFile(文件名),但是文件格式需要保存“编码UTF-8格式”。
从网上找一过程


procedure SaveUTF8File(AContent:string;AFileName: string);
var ffileStream:TFileStream;
futf8Bytes: string;
S: string;
begin
ffileStream:=TFileStream.Create(AFileName,fmCreate);
futf8Bytes:= UTF8Encode(AContent);
S:=#$EF#$BB#$BF;
ffileStream.Write(S[1],Length(S));
ffileStream.Write(futf8Bytes[1],Length(futf8Bytes));
ffileStream.Free;
end;

我写的执行过程。
SaveUTF8File(Memo1.Text,filenme);



但是将文件打开发现是乱码。
请求高手,delphi保文本文件如何选择编码UTF-8格式。
UTF-8
[解决办法]
能用啊,你的memo1.text是不是已经就是经过utf8编码的内容?
我测试下面是可行的:
SaveUTF8File('好样的abc', 'd:\a.txt')
[解决办法]
如果你用的是delphi 2010以后的版本,保存时直接Memo1.Lines.SaveToFile('xxx', TEncoding.UTF8)就搞定
[解决办法]
换几种不同的软件打开这个文件,看究竟是不是乱码吧。
[解决办法]
procedure SaveUTF8File(AContent: WideString; AFileName: string);
var
ffileStream: TFileStream;
futf8Bytes: AnsiString;
S: AnsiString;

begin
ffileStream := TFileStream.Create(AFileName, fmCreate);

futf8Bytes := UTF8Encode(AContent);
S := #$EF#$BB#$BF;
ffileStream.Write(S[1], Length(S));
ffileStream.Write(futf8Bytes[1], Length(futf8Bytes));
ffileStream.Free;
end;
没问题,高低版本通用.
如果楼主是高版本Delphi就简单了.直接可以存

读书人网 >.NET

热点推荐