如题:如何用delphi实现ansi编码格式的记事本文件转化为utf-8格式的xml文件我用比较老土的办法用delphi生成了很多txt文件,然后手工打开记事本文件另存为(编码格式选择utf-8)xml文件 内容是xml文件格式,xml文件可以正常使用现在遇到的问题是:不知道怎样将记事本文件按照编码格式utf-8另存为xml文件?请高手指点!急~~~

解决方案 »

  1.   

     利用delphi自带的UTF8Encode函数,将普通字符转换为utf-8编码创建一个流,MemoryStream或FileStream都可
      

  2.   


    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;
      

  3.   

    再来个读文件的的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;
      

  4.   

    我写的测试代码如下:
    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</...
      

  5.   

    你这个错误提示是xml格式错误
    你把你xml文件内容粘贴出来看看
      

  6.   

    哎 已经用很简单的方法解决了 不过 这个不是我最想要的方法
    程序如下:
    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;
      

  7.   

    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;