求救!关于MSXML中unicode的问题(100分)

  • 主题发起人 主题发起人 beyondeast
  • 开始时间 开始时间
B

beyondeast

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用MSXML3.0解析xml文档,遇到如下问题:
1、如果文件中有<?xml version="1.0" encoding="gb2312" ?> 这一行,则解析错误,若去除,
则正确。
2、用load方法调入某个含汉字的文件后,又用save保存,在被保存文件中,原来的汉字变成了乱码,
再解析这个文件,就会解析错误。我想是文件被存为unicode的缘故,可是如何解决呢?
请各位高手赐教,多谢!
 
这个问题其实比较好解决
首先XML就其文件而言
可以是unicode
也可以是GB2312等编码的
如果是unicode的
用普通的编辑器看就是乱码的,如UEdit6
但在支持unicode的编辑器中看就是正确的
这种XML文件中,一定没有encoding='gb2312'这样的标识的
可以用load方法的
如果是gb2312编码的
用普通的编辑器都可以查看
但第一行一定要有encoding='gb2312'
这种文件也可以用load加载的
关键有一个问题是loadXML
这是个比较麻烦的方法
这个方法参数中的字符串里一定不能有<?xml version='1.0' encoding='gb2312'?>
否则会出错
在save的时候
对一个gb2312编码的文档
 
msdn 上说得很清楚:
loadXML 只对 UTF-16 或者 UCS-2 (注:Delphi 中 WideString, COM 中的 BSTR) 起作用。
The loadXML() will work only with UTF-16 or UCS-2 encodings.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmmthloadxml.asp
 
那么请问孙老师,如何在DOMDocument对象中加入<?xml ... ?>的标记呢?
 
多人接受答案了。
 
孙老师,我也遇到相类似的问题,即含有:
<!DOCTYPE Organization [
<!ELEMENT Organization (OUS?, RLS?)>
<!ELEMENT OUS (OU*)>
……
]>时出错,
我想也应该是DomDocument.load的问题,请参考:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1006260
谢谢!
 
后退
顶部