不能使用IXMLDOMDocument的loadXML方式加载含有中文的UTF8编码的字符串?

covsno 2008-12-09 05:27:43
另一个讨论帖 http://topic.csdn.net/u/20081209/14/282ea0c1-f985-4553-a165-c42eab4755c5.html
使用MSXML loadXML含有中文的UTF8字符串失败
原始的(UTF8编码):
<results> <text="鏂囨湰" a="閾炬帴"> </results>

解码后的:
<results> <text="文本" a="链接"> </results>

原始的loadXML不成功,解码后的是可以loadXML的

...全文
863 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sgrate 2010-01-15
  • 打赏
  • 举报
回复
谢谢回复
jameshooo 2008-12-10
  • 打赏
  • 举报
回复
loadXML只认UNICODE字符串,所以调用之前必须自己转换成UNICODE,如果需要XMLDOC自己来解析,必须使用load方法,load方法的参数是VARIANT,可以传递多种类型:
1、如果参数类型是VT_BSTR,解析器会把它当作URL或者文件路径来加载文件。
2、如果参数类型是VT_UNKNOWN,解析器会依次从IUnknown接口查询IStream、IPersistStream、IRequest接口,只要查询到任何一个,就直接调用该接口的Load方法来加载。
3、如果参数类型是SAFEARRAY(VT_ARRAY|VT_UI1),解析器把它当作字节数组来加载。

上述3种方式(实际应该是5种)你都可以用,有的是读文件,有的是读内存,有的是从网络获取,这些方式加载XML都会从XML内容中获取编码并自动解码。
covsno 2008-12-10
  • 打赏
  • 举报
回复
他大爷的,主要是被 SDK上 的VB和SCRIPT给迷惑了,没往下看
covsno 2008-12-10
  • 打赏
  • 举报
回复
OK
谢谢jameshooo ,搞定了
SDK果然是这么说的
ToperRay 2008-12-10
  • 打赏
  • 举报
回复
<results> <text="鏂囨湰" a="閾炬帴"/> </results>

你这样不叫UTF-8编码,哥们。



3,056

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧