我要读取的xml的编码方式是gb2312,如果xml里没有特殊字符就没有问题,但如果有的话就出现switching encoding: encoder error
iconv啊什么的那些函数我都用过了,没用,iconv是用在string上的吧,我用$xml->(file.xml); 的方法一load就出错了。得到的$xml是一个object吧。
还有header('Content-Type:text/html;charset=gb2312');header('Content-Type:text/html;charset=utf-8');我也用过了,没用。
各位大哥有什么好的方法解决吗? 我有个想法是可否先用file_get_contents得到string,然后再利用正则啊什么的得到xml文件的数据
万分感谢!!!!!!!!!!!

解决方案 »

  1.   

    你指的特殊字符是什么.有些字符在xml里是要处理一下的.本身就应该转义.
      

  2.   

    查找哪些是特殊字符,对其转义.
    至于非英文字符产生的乱码,这个比较难办了.
    最好xml头和xml数据的编码是一致的.我曾经遇到过日文中的句号,是全角,死活解析不了的问题.唉.
      

  3.   

    很奇怪  <![CDATA[ ]]>  这个标志里边的东西不是不用解析的吗?只有这里面的是特殊字符。
    为什么会影响到这个xml文件? 唉。搞不明白。 如果没有<![CDATA[ ]]>,就不会有问题,有就有问题。
      

  4.   

    你可以专门去查一下<![CDATA[ ]]>  的作用,你有答案了,发布出来大家一起学习一下,呵呵
      

  5.   

    我也遇到同样的问题,我的问题原因比较明确,但还不知解决方法,出现问题的特殊字符是一些特殊中文,编码是GB2312的,我是在读取百度mp3数据时出的问题,
    例如:徐若瑄的“瑄”,陶喆的“喆”,蔡旻佑的“旻”等一些比较怪僻的生字时出错,还有一些日文的词,例如勇気的“気”,手嶌葵的“嶌”等,不知是否和我PHP文件有关,PHP的是utf-8的,不过我也试过GB2312的没有问题。
    同时还试过了谷歌音乐里有徐若瑄的“瑄”这个字的xml文件,没有报错,谷歌音乐里的xml是utf-8的。
    问题正在解决中……
      

  6.   

    gbk的你就file_get_contents读进来,把<?xml里的encoding换成gbk,然后传入load_string就可以开始操作了。至于要页面乱不乱吗是<meta>里设置的。
      

  7.   

    $s = '﹍o ●篼篼帮⿶ .^*^';
    echo iconv('gbk', 'utf-8', $s);得到 ﹍o ●篼篼帮&#12278; .^*^你可以先读到字符串,转码后在用 loadXML 方法加载
    注意 gb2312 要替换成 utf-8