PHP CURL获取Web Service出现乱码问题

来源:互联网 发布:高夫和妮维雅 知乎 编辑:程序博客网 时间:2024/05/21 00:00

PHP获取API接口数据时,发现解析不了,echo出来发现有乱码。代码如下:

public function testPost(){$url = 'http://api.local/test';$para->name ="edwin";$para->sex ="male";$sPara = json_encode($para);$sPara = "r=" . urlencode($sPara);$sReturn = $this->http_post_data($url, $sPara);echo $sReturn;}function http_post_data($url, $data_string) {$ch = curl_init();  curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);curl_setopt($ch, CURLOPT_HEADER,'Content-Type: application/json');curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);$return_content = curl_exec($ch);//运行curlcurl_close($ch);return $return_content;}


刚开始怀疑是不是对方接口多给了字符,用.net 写测试没有出现任何问题。

然后把返回的数据写入txt,在UltraEdit中打开,用16进制查看,发现是有乱码出现,字符:EF BB BF

再查资料,发现这个叫BOM头:BOM头是隐藏字符,非编辑字符,就像普通空文件一样,当我们写<?php的时候其实之前已经加了BOM头


if (substr( $return_content, 0, 3 ) == "\xEF\xBB\xBF" ){ $return_content=substr_replace( $return_content, '', 0, 3 ) ; }


开发的时候要替换掉它。

参考资料:http://xdebug.blog.51cto.com/1135229/849879




原创粉丝点击