Delphi操作XML如何把汉字转为ISO-8859-1 对方提供的接口文件标准:<?xml version="1.0" encoding="ISO-8859-1" ?>不能用gb2312或其他编码我用TXMLDocument去导出XML,现在的问题是:因为接口文件采用的是西欧标准, 不能直接存汉字进去。JAVA里好像有个函数 str = new String(str.getBytes(),"ISO8859-1"); 可以转换不知道DELPHI有没有这样的函数,或者有没有其他方法可以实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你用XMLDom解析的话,你在存储的时候设置encoding的编码就可以了,DELPHI会帮你自动转的 是不是方法不对呢,以下是代码,帮忙看下: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; ISO-8859-1 根本不包含中文字符编码无论用什么办法都不可能去编码中文字符解决办法应该是要求对方使用UTF-8或者其他unicode编码协议然后在你的程序中需要转换gb2312到UTF-8 这不是delphi的问题即使用Java也一样最多是xml头上写着ISO-8859-1但其中实际字符编码还是Unicode 代码没有问题,而是ISO-8859-1根本就不支持中文,最好是改用UTF-8或UTF-16,这样中英文通用,而且在英文电脑上也能正常显示。 这个是编码问题,还是建议使用UTF-8或者UTF-16 C++ 转 delphi,10行!谢谢先! 如何实现递归并将结果存入数据库 Delphi2007的问题。有谁遇到过没。 为什么程序关闭的时候报XXX内存不能read的错! 请问如何打开dll文件?急! 高分相送 高手求救啊。。分布式结构DCOM倒底怎么用啊 定制组件出错了,望高手帮忙 救命呀!!!!!!!!!!!!!!含泪请教!!! 谁说最毒妇人心 delphi如何加密文件夹? 关闭delphi7 后出现如下错误提示
是不是方法不对呢,以下是代码,帮忙看下:
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;
无论用什么办法都不可能去编码中文字符
解决办法应该是要求对方使用UTF-8或者其他unicode编码协议
然后在你的程序中需要转换gb2312到UTF-8
最多是xml头上写着ISO-8859-1但其中实际字符编码还是Unicode