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

类别:编程语言 点击:0 评论:0 推荐:
前几天,需要在程序中加入解析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应用程序中没有这么多麻烦,直接可以用

本文地址:http://com.8s8s.com/it/it24517.htm