1. 程式人生 > >php curl函數出現亂碼

php curl函數出現亂碼

今天在使用curl採集網站資訊時輸出介面中文是亂碼的,於是我新增 第一行新增常規方法header("Content-Type: text/html;charset=utf-8");結果證明沒有用。於是看了一下對應網站響應頭。

content-type是gbk,不對啊,難道要轉到utf-8(),好吧試試。

echo mb_convert_encoding($out, "utf-8", "GBK");沒效果,那我用這個
echo iconv("GBK", "UTF-8", $out);,依然沒效果。咦,啥情況,於是再看響應頭,發現有個content-encoding,這個從字面上看好像和編碼有關係,這個有啥用呢,這是一個內容編碼,詳見請看 
HTTP 協議中的 Content-Encoding
,我感覺找到原因了。搜尋一番,有人講可以使用curl_setopt($ch, CURLOPT_ENCODING,'gzip');不過我沒效果,查詢一番後,
function http_get($URL) {
    $agent = $_SERVER['HTTP_USER_AGENT'];
    if( !$agent ){
        return false;
    }
    $c = curl_init();
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);//這個是不直接在頁面輸出
    curl_setopt($c, CURLOPT_USERAGENT, $agent);//這個註釋點好像不影響
    curl_setopt($c, CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate'));
    curl_setopt($c, CURLOPT_ENCODING, 'gzip,deflate');//這個是解釋gzip內容.................
    curl_setopt($c, CURLOPT_URL, $URL);
    curl_setopt($c, CURLOPT_TIMEOUT,2);
    $contents = curl_exec($c);
    $contents = mb_convert_encoding($contents, 'utf-8', 'GBK,UTF-8,ASCII');
    $httpCode = curl_getinfo($c,CURLINFO_HTTP_CODE);
    curl_close($c);
    return ['data'=>$contents,'http_code'=>$httpCode];
}

相關推薦

php curl出現亂碼

今天在使用curl採集網站資訊時輸出介面中文是亂碼的,於是我新增 第一行新增常規方法header("Content-Type: text/html;charset=utf-8");結果證明沒有用。於是看了一下對應網站響應頭。 content-type是gbk,不對啊,難

php curl簡單采集圖片生成base64編碼(並附curl說明)

transfer alt ref sign ans copyto article pan exec 許多年前的代碼突然拿來一用,特做此筆記(此處的code用來定位內部錯誤位置,非http code) [php] view plain copy <?ph

php callback

bsp 用戶 back mixed 調用函數 定義 作用 用戶自定義函數 parameter //自定義函數function study($username){ echo $username. ‘ is study...<br/>‘;}function p

php 常用

uid 集中 客戶 前行 int class 出現 函數 影響 die(‘‘) 終止當前php文件的執行,並且向客戶端輸出一個終止原因說明.@ 壓制住當前行代碼警告消息. time() 返回當前系統時間,以秒為消息的整數 $id = mysqli_i

使用 curl() 實現不同站點之間註冊用戶的同步

return pla ie 10 erro close header 實現 bst none 一 需求 在A站點註冊一個新用戶,那麽,在B站點也會被同時註冊 二 思路 在A站點註冊的同時,調用API接口實現在B站點也會被同時註冊 三 實現 主要代碼如下: 1 func

php filter_var判斷郵箱,url,ip格式

後來 使用 gdi 都是 gmail filter mail http 郵箱 以前使用php的時候還不知道有過濾器filter這玩意,那時候判斷郵箱、url和ip地址格式是否符合都是用正則表達式。後來隨著使用的逐漸深入,才知道在php中也可以使用內置的函數庫過濾器filte

php筆記--(1)

family ica 支持 內置 12px -- add ping function 1.使用 function 開頭;2.函數名可以用字母或下劃線開頭 ;3.函數體必須在大括號內; 1 <?php 2 3 function a_b() { 4 5

PHP·總結

長度 lob inf () lsp 顯示 software func bst PHP 指 PHP:超文本預處理器(譯者註:PHP: Hypertext Preprocessor,遞歸命名) PHP 是一種服務器端的腳本語言,類似 ASP PHP 腳本在服務器上執行 PHP

php float四舍五入問題

oat round float 問題 floor函數 val 轉換 整形 3.1 不四舍五入只取整數floor函數 2.1 = 2 2.6 = 2 不四舍五入浮點進1ceil函數:2.1 = 3 2.6 = 3

(thinkPHP)PHP常用大全

getc 例如 port result 數據處理 判斷 文件和目錄 phone 結果集 usleep() 函數延遲代碼執行若幹微秒。unpack() 函數從二進制字符串對數據進行解包。uniqid() 函數基於以微秒計的當前時間,生成一個唯一的 ID。time_sleep_

PHP substr()

div substr() 參數 實例 substr str sta nbsp p s 實例 從字符串中返回 "world": 運行實例 定義和用法 substr() 函數返回字符串的一部分。 註釋:如果 start 參數是負數且 length 小於或等於 start,

php

賦值 數組 參數 body 操作 echo 列表 name 一個數 1.函數定義: 函數就是將一些重復使用到的功能寫在一個獨立的代碼塊中,在需要時單獨調用。創建函數的基本語法格式為: function fun_name($str1,$str2,,,,$strn){ fun_

ajax提交java後臺接收參出現亂碼

class ati -1 5% 文字 timeout 亂碼 中文字符 java後臺 1.現象: 前臺ajax提交查詢數據 $.ajax({ url: ‘bdmap/xx.action‘, data:para,

PHP fpassthru()

如果 tip 檢索 www school 下載 部分 有效 處理 定義和用法 fpassthru() 函數輸出文件指針處的所有剩余數據。 該函數將給定的文件指針從當前的位置讀取到 EOF,並把結果寫到輸出緩沖區。 語法 fpassthru(file) 參數描述 fil

PHP set_error_handler()

rst 未在 comm 接受 false 如果 返回值 用法 ger 實例 通過 set_error_handler() 函數設置用戶自定義的錯誤處理程序,然後觸發錯誤(通過 trigger_error()): <?php // 用戶定義的錯誤處理函數 func

17)PHP基礎和參問題

個數 str fun ont 數據 ges 實參 col 返回 (1)函數定義形式:          1 function 函數名字(形參1,形參2,形參3.。。。。。。。) 2 { 3 4

PHP isset 作用

efi array tab pla containe 作用 不為 lai html PHP isset 函數作用 isset函數是檢測變量是否設置。 格式:bool isset ( mixed var [, mixed var [, ...]] ) 返回值: 若變量

php常用整理

blog ole 類型 整理 bject php常用函數 字符 min color 1.類型轉換 php基本類型有 int,float,string,bool,array,object,轉換方式有三種,這裏只介紹下面一種 (int) (bool) (float) (s

php parse_url()和parse_str()

spa 缺少 http blog query sco art out port 1.parse_url():解析URL,並返回其組成部分   原型:mixed parse_url ( string $url [, int $component = -1 ] ) 此函數返回一

curl 總結

curl參數:$url 請求 URL string;$body array ;$header array;function postCurl($url,$body,$header,$type="POST"){ //1.創建一個curl資源 $ch = curl_init(); //2.