日期:2014-05-16  浏览次数:20711 次

linux下用libxml2解析包含中文数据的xml时出错
各位大侠好,又出来麻烦大家了。
现在碰到一个问题,如题所示。详细情况如下:
1.server端通过socket发送xml数据。
XML code

<?xml version="1.0" encoding="utf-8" ?>
<root>      
    <config operation="building">       
        <building_name>办公楼</building_name>            
    </config>
</root>


2.用libxml2库来解析发过来的xml数据提示错误
Entity: line 1: parser error : Input is not proper UTF-8, indicate encoding !

想请教一下:
1.发过来的xml编码方式明明写的是"utf-8",为什么还提示错误?
2.如果要解决这个问题是不是要把xml编码方式改为"gb2312"在从server端发过来,然后再通过iconv来编码转换为"utf-8"?
XML code

<?xml version="1.0" encoding="gb2312" ?>
<root>      
    <config operation="building">       
        <building_name>办公楼</building_name>            
    </config>
</root>


3.我的程序只是解析出数据,不需要显示数据的内容。
谢谢大家啦!!!



------解决方案--------------------
xml默认都是utf8,意思是它将按照utf8编码解析XML报文内的字节。

楼主一看就编码白痴,以为改一下encoding就完了吗,编码是数据的编码,不是你说是啥就是啥了。

先确定XML报文自身的编码格式,然后指定对应的encoding即可,这样可以保证libxml2解析正常,当然拿到的数据也是XML报文本身的编码,接下来要怎么用自己决定是否iconv往别的码转。