如何把一个文件写成UTF8格式的

reonlyrun 2005-12-12 07:48:53
以下是我程序,但保存后的文件还是ANSI格式的,就是用记事本打开里面还是可以看的字符,原test.txt是看不懂的字符


var
tmpFileName: String;
tmpFile: TextFile;
tmpUTF8Str: UTF8String;
tmpStr: AnsiString;
i: Integer;
begin
tmpFileName := 'D:\Temp\test.txt';
AssignFile(tmpFile, tmpFileName);
try
Rewrite(tmpFile);
for i := 0 to Memo1.Lines.Count - 1 do
begin
tmpStr := Memo1.Lines[i];
tmpUTF8Str := AnsiToUtf8(tmpStr);
Writeln(tmpFile, tmpUTF8Str);
end;
finally
CloseFile(tmpFile);
end;
ShowMessage('OK');
...全文
100 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2005-12-14
  • 打赏
  • 举报
回复
记事本对中文的支持有问题,如:"联通"两个字在用记事本用ASNI保存后无法读出,所以,建议用ultra-edit
reonlyrun 2005-12-13
  • 打赏
  • 举报
回复
请教keiy写成的文件用记事本打开其中的中文部分是什么样?如“中国人”会显示成什么?
柯本 2005-12-12
  • 打赏
  • 举报
回复
我试过两种方法都可以:
procedure TForm1.Button1Click(Sender: TObject); //方法1,API
var
t:pchar;
f:thandle;
w:dword;
begin
t:=pchar(ansitoutf8(memo1.Text));
ShowMessage(t);
f:=createfile('d:\temp\test.txt',GENERIC_WRITE,FILE_SHARE_WRITE ,nil,CREATE_ALWAYS,0,0);
writefile(f,t^,length(t),w,nil);
closehandle(f);
end;

procedure TForm1.Button2Click(Sender: TObject); //TStringlist
var
t:tstringlist;
begin
t:=tstringlist.Create;
t.add(ansitoutf8(memo1.Text));
ShowMessage(t.Text);
t.SaveToFile('d:\temp\test.txt');
t.free;
end;
end.

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧