基于Win32 console的MSXML读取中文的问题解决过程

王朝system·作者佚名  2006-01-09
宽屏版  字体: |||超大  

前几天,需要在程序中加入解析XML的程序,于是开始了学习。

以前在Solaris平台上用过Apache的基于java的Xerces,估计应该问题不大。这次是在Windows上开发,于是就准备用MSXML。首先在www.microsoft.com下载了一个MSXML SDK 4.0 SP2,安装了之后按照帮助文件中写了一个SAX2的程序(Visual C++ Win32 Console的程序),运行成功。接着开始读我自己的XML文件,傻眼了,中文属性读不出来!跟踪到SAX2的ContentHandler,读取属性的getValue返回的字符长度中为2,只是一个”好而已!

首先,我想到可能是encoding的问题,使用XMLSPY 2005将encoding调为gb2312,utf-8,utf-16,ucs-2等,都不行!

然后,我将工程改为Unicode编译,也不行!确省的MBCS也不行。

第三步,上了微软中国网站,下了一个msxmlchs.msi中文版,安装,问题依旧!

第四步,下载了Xerces C,编译examples中的SAX2Print,能读中文,但需要一个转换类,感觉和MFC结合的

不是很好(也许是我对Xerces C不熟),虽作罢。

第五步,使用DOM模型,还是读不出中文!

第六部,使用smart pointer DOM,终于可以读出中文了,但我还是想找一下DOM和SAX2为什么读不出中文。

最后在网上找了一些资料,终于找出原因了,要调用setlocale(LC_ALL,“chinese-simplified“).看来还是C语言不过关。

在MFC应用程序中没有这么多麻烦,直接可以用

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有