以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  用vc调用IXMLDOMDocument指针对象对xml文档写一个PI后XML中出现乱码的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=16506)


--  作者:linshaodan
--  发布时间:4/3/2005 12:06:00 AM

--  用vc调用IXMLDOMDocument指针对象对xml文档写一个PI后XML中出现乱码的问题
片断代码如下:                               
                               IXMLDOMDocument *pdoc = NULL;
                               IXMLDOMProcessingInstruction *ppi = NULL;
                               
                                BSTR target = (BSTR)("xml");
  
  BSTR data = (BSTR)("version='1.0' encoding='utf-8'");

  hr = pdoc->createProcessingInstruction(target ,data ,&ppi);

  SUCCEEDED(hr) ? 0 : throw hr;

  pdoc->appendChild(ppi,NULL);

  ppi->Release();
生成的XML文档中出现    <?浸l 敶獲潩㵮ㄧ〮‧湥潣楤杮✽瑵ⵦ✸?>
而不是程序所要的         <?xml version='1.0' encoding='utf-8'?>
这是为什么?
请路过的大虾们HELP ME!!!
万分感谢!!!


--  作者:linshaodan
--  发布时间:4/3/2005 9:37:00 PM

--  
 
                                 BSTR target = (BSTR)("xml");
  
                                 BSTR data = (BSTR)("version='1.0' encoding='utf-8'");
把上面两句改成下面写法就行了,由于是操作COM对象,所以要把字符串定义为OLECHAR* 然后通过重新分配字符串函数SysAllocString转换为OLE字符串(32位宽字符串)其实OLECHAR* 就是 BSTR;
                               OLECHAR *ptgstr = {L"xml"};
  BSTR target = SysAllocString(ptgstr);
  OLECHAR *pdatastr = {L"version='1.0' encoding='utf-8'"};
  BSTR data = SysAllocString(pdatastr);

  pdoc->createProcessingInstruction(target ,data ,&ppi);


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms