对方提供的接口文件标准:<?xml version="1.0"  encoding="ISO-8859-1"  ?>
不能用gb2312或其他编码
我用TXMLDocument去导出XML,现在的问题是:
因为接口文件采用的是西欧标准, 不能直接存汉字进去。JAVA里好像有个函数 str = new String(str.getBytes(),"ISO8859-1"); 可以转换
不知道DELPHI有没有这样的函数,或者有没有其他方法可以实现。 

解决方案 »

  1.   

    如果你用XMLDom解析的话,你在存储的时候设置encoding的编码就可以了,DELPHI会帮你自动转的
      

  2.   


    是不是方法不对呢,以下是代码,帮忙看下:
    var
      xdoc: TXMLDocument;
      xroot,XnA,XnB : IXMLNode;
    begin
      xdoc:= TXMLDocument.Create(Self);
      try
        xdoc.DOMVendor := GetDOMVendor('MSXML');
        xdoc.NodeIndentStr := #09;                   //使用TAB字符
        xdoc.Options := [doNodeAutoIndent];      //自动换行
        xdoc.Active := True;
       //xmlDoc.Encoding    :=    'GB2312'; //可以存储,但不能用此标准
        xdoc.Encoding := 'ISO-8859-1'; //西欧标准
        xdoc.Version := '1.0';
        xdoc.DocumentElement := xdoc.CreateNode('data');    xnRoot := xdoc.DocumentElement;
        XnA := xdoc.CreateNode('record');  
        xnRoot.ChildNodes.Add(XnA);
        XnA.Attributes['Key'] := '20100301' ;
        XnB    :=   xdoc.CreateNode('Attribute');  
        XnA.ChildNodes.Add(XnB);
        XnB.Text    :=    'Attribute';
        XnB.Attributes['Id'] := '10156' ;
        XnB.Attributes['name'] := '汉字' ;//此处如何处理转换???
        xdoc.SaveToFile('d:\test.xml');//报错:字符不能保存ISO-8859-1编码
      finally
        FreeAndNil(xdoc);
      end;
      

  3.   

    ISO-8859-1 根本不包含中文字符编码
    无论用什么办法都不可能去编码中文字符
    解决办法应该是要求对方使用UTF-8或者其他unicode编码协议
    然后在你的程序中需要转换gb2312到UTF-8
      

  4.   

    这不是delphi的问题即使用Java也一样
    最多是xml头上写着ISO-8859-1但其中实际字符编码还是Unicode
      

  5.   

    代码没有问题,而是ISO-8859-1根本就不支持中文,最好是改用UTF-8或UTF-16,这样中英文通用,而且在英文电脑上也能正常显示。
      

  6.   

    这个是编码问题,还是建议使用UTF-8或者UTF-16