问题是这样的,我现在的开发环境.是zend framwork.DB是postgre,现在的问题是什么server端去查数据库.给出来一个结果集,前端通过webservices把数据打出来,但是在测试前端的时候,一直报这个错误.Uncaught SoapFault exception: [env:Receiver] SOAP-ERROR: Encoding: string '\xe6...' is not a valid utf-8 string in D:\web\ezwebservice\product\test.php:20
我查到的问题是这样的,把数据从DB里select 出来之后,送到方法的返回值上,就会出现这个问题,直接打上字符之后,就不会报这个错,wsdl我已经检查了.没错.message ,binding,type 都对,没有问题.
s端的,c端都必须是uft-8的.但是s端的数据从DB里取出来之后再经过iconv("GB2312","UTF-8",$result[24])转换之后, 这个错误.Uncaught SoapFault exception: [env:Receiver] SOAP-ERROR: Encoding: string '\xe6...' is not a valid utf-8 string in D:\web\ezwebservice\product\test.php:20 就消失了.不过值并没有出在c端出现.大家在以前的开发php项目的时候,遇到这个问题没有.这个问题,已经折磨我好几天了,有会的帮个忙呗...

解决方案 »

  1.   

    你把DB后的数据输出看看,如果跟页面的编码不一致会显示乱码的!再有你的服务器上的iconv函数能用否?在就不清楚了,帮你顶了,期待高手来!
      

  2.   

    1,用mb_convert转.
    2.把gb2312改成gbk
      

  3.   

    你把DB后的数据输出看看,如果跟页面的编码不一致会显示乱码的! 再有你的服务器上的iconv函数能用否? 在就不清楚了,帮你顶了,期待高手来!
    ---------------------------------
    iconv可以的。db输入我也看了,也没问题。1,用mb_convert转. 
    2.把gb2312改成gbk
    ----------------------------
    呵呵,必须是utf-8的
      

  4.   

    我给你说了.是转码中的原始编码,将gb2312改成Gbk,不是让你改目标编码.
    gb2312包含的汉字集是有限的.内码映射表中没有这些值.
      

  5.   

    1,用mb_convert转. 
    2.把gb2312改成gbk