|
|
基于Win32 console的MSXML读取中文的问题解决过程 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
前几天,需要在程序中加入解析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应用程序中没有这么多麻烦,直接可以用

|
|
相关文章:相关软件: |
|