本文實(shí)例講述了PHP基于curl post實(shí)現(xiàn)發(fā)送url及相關(guān)中文亂碼問題解決方法。分享給大家供大家參考,具體如下:
這個(gè)問題困擾我?guī)滋炝耍l(fā)送的指定網(wǎng)址的url參數(shù),中文總是亂碼,指定網(wǎng)址是utf8編碼的,我發(fā)送的也是utf8編碼的。但是還是亂碼,開始用的file_get_contents,后來換成curl并在php.ini中開啟了php_curl,還是不行,又加了header終于解決。代碼如下:
$url = 'http://'; //調(diào)用接口的平臺(tái)服務(wù)地址 $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);
總結(jié):解決此類編碼問題,首先,要確認(rèn)兩個(gè)地方的編碼是什么,其次,如果編碼相同那么可以直接發(fā)送,使用curl需要加header設(shè)置charset,最后,多查多試,一種方法不行再換另一個(gè)試試,如果都不行,那么就從頭再考慮一遍問題,總能解決的。
PS:這里將content-type設(shè)置為:application/x-www-form-urlencoded;
本站前面一篇http://www.jb51.net/article/129039.htm針對(duì)content-type的原理與設(shè)置方法做了較為詳盡的說明,有助于讀者進(jìn)一步加深理解。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php curl用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。