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;
再来个读文件的的function LoadUTF8File(AFileName: string): string; var ffileStream:TFileStream; fAnsiBytes: string; S: string; begin ffileStream:=TFileStream.Create(AFileName,fmOpenRead); SetLength(S,ffileStream.Size); ffileStream.Read(S[1],Length(S)); fAnsiBytes:= UTF8Decode(Copy(S,4,MaxInt)); Result:= fAnsiBytes; end;
我写的测试代码如下: procedure TForm1.Button1Click(Sender: TObject); var ffileStream:TFileStream; futf8Bytes: string; S: string; AFilename:string; AContent:string; f1:textfile; begin assignfile(f1,'d:\xml\xml4.txt'); reset(f1); Afilename := 'd:\xml\xml4.xml'; ffileStream:=TFileStream.Create(AFileName,fmCreate); S:=#$EF#$BB#$BF; while not eof(f1) do begin readln(f1,AContent); ffileStream.Write(S[1],Length(S)); futf8Bytes:= UTF8Encode(AContent); ffileStream.Write(futf8Bytes[1],Length(futf8Bytes)); end; ffileStream.Free; showmessage('转化完成!'); end;生成的 xml 用ie打开错误 : 文档的顶层无效。处理资源 'file:///D:/xml/xml4.xml' 时出错。第 1 行,位置: 40 <?xml version="1.0" encoding="utf-8" ?><urlset><url><loc>http://www.xgzrc.com/job/91506.html</...
你这个错误提示是xml格式错误 你把你xml文件内容粘贴出来看看
哎 已经用很简单的方法解决了 不过 这个不是我最想要的方法 程序如下: procedure TForm1.Button1Click(Sender: TObject); var f1,f2:textfile; s1:string; s2:string; begin assignfile(f1,edit1.Text); assignfile(f2,edit2.Text); reset(f1); rewrite(f2); while not eof(f1) do begin readln(f1,s1); s2:= UTF8Encode(s1); writeln(f2,s2); end; closefile(f1); closefile(f2); showmessage('转化完成!'); end;
txt文件内容是按照xml格式写的 只是编码不一样 所以一行一行的进行编码转化 是可以实现的 老土的办法!procedure TForm1.Button1Click(Sender: TObject); var f1,f2:textfile; s1:string; s2:string; begin assignfile(f1,'d:\xml\xml4.txt'); assignfile(f2,'d:\xml\url144.xml'); reset(f1); rewrite(f2); while not eof(f1) do begin readln(f1,s1); s2:= UTF8Encode(s1); writeln(f2,s2); end; closefile(f1); closefile(f2); showmessage('转化完成!'); end;
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;
var
ffileStream:TFileStream;
fAnsiBytes: string;
S: string;
begin
ffileStream:=TFileStream.Create(AFileName,fmOpenRead);
SetLength(S,ffileStream.Size);
ffileStream.Read(S[1],Length(S));
fAnsiBytes:= UTF8Decode(Copy(S,4,MaxInt));
Result:= fAnsiBytes;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ffileStream:TFileStream;
futf8Bytes: string;
S: string;
AFilename:string;
AContent:string;
f1:textfile;
begin
assignfile(f1,'d:\xml\xml4.txt');
reset(f1);
Afilename := 'd:\xml\xml4.xml';
ffileStream:=TFileStream.Create(AFileName,fmCreate);
S:=#$EF#$BB#$BF;
while not eof(f1) do
begin
readln(f1,AContent);
ffileStream.Write(S[1],Length(S));
futf8Bytes:= UTF8Encode(AContent);
ffileStream.Write(futf8Bytes[1],Length(futf8Bytes));
end;
ffileStream.Free;
showmessage('转化完成!');
end;生成的 xml 用ie打开错误 :
文档的顶层无效。处理资源 'file:///D:/xml/xml4.xml' 时出错。第 1 行,位置: 40 <?xml version="1.0" encoding="utf-8" ?><urlset><url><loc>http://www.xgzrc.com/job/91506.html</...
你把你xml文件内容粘贴出来看看
程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
f1,f2:textfile;
s1:string;
s2:string;
begin
assignfile(f1,edit1.Text);
assignfile(f2,edit2.Text);
reset(f1);
rewrite(f2);
while not eof(f1) do
begin
readln(f1,s1);
s2:= UTF8Encode(s1);
writeln(f2,s2);
end;
closefile(f1);
closefile(f2);
showmessage('转化完成!');
end;
var
f1,f2:textfile;
s1:string;
s2:string;
begin
assignfile(f1,'d:\xml\xml4.txt');
assignfile(f2,'d:\xml\url144.xml');
reset(f1);
rewrite(f2);
while not eof(f1) do
begin
readln(f1,s1);
s2:= UTF8Encode(s1);
writeln(f2,s2);
end;
closefile(f1);
closefile(f2);
showmessage('转化完成!');
end;