经过我测试,确实发现改为gbk会出现错误,从gdb的结果来看是指向了hanler->input, xmlFindCharEncodingHandler这个函数操作的结果已经表明gbk编码是在libxml的编码列表中,但为什么hanler- >input这个函数为什么会出错呢?应该是libxml提供的这个函数,只允许把其它编码转化为utf-8,或者iso-8859-2,所以你想转换成gbk是不行的,而且也没必要,这里的 xml是用来内部处理的,而不是显示的,所以最好都用utf-8来传输。而例子一则是将传输来的xml文件(原gbk)转化为utf-8格式。这两个例子都是为了把输入的文件或字符串从原来的编码转换至最终的utf-8, 其中用iconv可将编码互相转换,而libxml的转换函数,则只能将其它编码转化为指定的两种:utf-8或者iso-8859-2