LINUX下Xerces C++如何解析XML文档中中文字符 (linux 中文字符)

\ 解析简单xml文档的基本步骤就是如此简单,至于复杂的XML文档,解析的步骤,尤其是创建DOM树的方法有点不同,在这里便不作介绍。接下来,来讲一下困扰我多天的中文解析问题。我们知道,Xerces C++默认只支持节配蔽点名中文,至于节点值,属性值则不支持,即使解析出来的也是乱码,所以需要自己解决。在肆茄这里,我们选用UTF-8编码格式的XML文档。先来看一下乱码的原因,由于XML解析器解析的字符串都是 XMLCh*(typedef unsigned int XMLCh)格式的,一个字符占用一个字节,而汉字字符确要占用两个字节。故若不做适当的转换,汉字的输出结果就变成乱码了。在

提供了一种解决的方法,但是那个解决方案只有在locale环境为UTF-8的情况下你才可以看见正常的中文输出,在locale为GB18030等环境下,你的中文是乱码。但是在一种环境下可以正常显示,说明已经可以正常解析出来了,只是在不同环境的机器上需要进行码型转换,因此,我在他提供的类中又添加了两种方法,来进行码型转换:bool TranslatorUTF8ToChinese(string &strTranslatorMsg);//实现从UTF-8到GBK、GB2312等码型的转换bool UTF8_2_GB2312(char *in, int inLen, char *out, int outLen);这样,你就可以在把UTF-8编码的中文正常的解析培雹州打印出来了。

相关问题拓展阅读:

    关于linux 中文字符的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


    数据运维技术 » LINUX下Xerces C++如何解析XML文档中中文字符 (linux 中文字符)