本文實例講述了PHP基于curl post實現發送url及相關中文亂碼問題解決方法。分享給大家供大家參考,具體如下:
這個問題困擾我幾天了,發送的指定網址的url參數,中文總是亂碼,指定網址是utf8編碼的,我發送的也是utf8編碼的。但是還是亂碼,開始用的file_get_contents,后來換成curl并在php.ini中開啟了php_curl,還是不行,又加了header終于解決。代碼如下:
$url = 'http://'; //調用接口的平臺服務地址 $post_string = array('a'=>'b'); $ch = curl_init(); $this_header = array( "content-type: application/x-www-form-urlencoded; charset=UTF-8" ); curl_setopt($ch,CURLOPT_HTTPHEADER,$this_header); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $result = curl_exec($ch); if($result) echo "script>\nalert(\"同步成功! \");\n/script>"; curl_close($ch);
總結:解決此類編碼問題,首先,要確認兩個地方的編碼是什么,其次,如果編碼相同那么可以直接發送,使用curl需要加header設置charset,最后,多查多試,一種方法不行再換另一個試試,如果都不行,那么就從頭再考慮一遍問題,總能解決的。
PS:這里將content-type設置為:application/x-www-form-urlencoded;
本站前面一篇https://www.jb51.net/article/129039.htm針對content-type的原理與設置方法做了較為詳盡的說明,有助于讀者進一步加深理解。
更多關于PHP相關內容感興趣的讀者可查看本站專題:《php curl用法總結》、《PHP網絡編程技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP數據結構與算法教程》、《php程序設計算法總結》、《PHP運算與運算符用法總結》及《php常見數據庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。