2012-04-28 53 views
0

我在一個字符串中有一個不幸的外國字符的網址。當我將它們發送到curl_setopt($ go,CURLOPT_URL,$ url)時沒有任何反應,該命令沒有運行。 另一方面,當我使用我的Chrome瀏覽器並複製具有外來字符的鏈接位置並將其粘貼到瀏覽器上時,這些外部字符編碼爲類似於%20%D5%F0%EF%EB%EF% E3%E9%F3%F4%DD%F2,我知道%20代表空格..並且這個轉換後的字符串與curl命令一起工作 已使用urlencode,iconv,但還沒有找到正確的方法。結果不符合粘貼的結果。有什麼功能嗎? chars是希臘人。 非常感謝cURL不處理外部http字符php

回答

0

什麼是該網頁的原始編碼?你能給我們的網址和部分源代碼?

嘗試字符串轉換爲所需的字符編碼

$response = html_entity_decode(htmlentities(curl_exec($ch)), ENT_COMPAT, 'UTF-8'); 
$response = iconv('windows-1253','utf-8',$response); 
+0

http://www.oktabit.gr/index的.asp?omada_3_id = 1&omada3 =%D3%F4%E1%E8%E5%F1%EF%DF%20%D5%F0%EF%EB%EF%E3%E9%F3%F4%DD%F2&omada2 = 1&OMAS = %B8%F4%EF%E9%EC%E1%20Desktop%20%D3%F5%F3%F4%DE%EC%E1%F4%E1&show = 1&seires = 15 是編碼url,如果I; m正確的編碼g是windows-1253 我不知道你是否熟悉希臘語,但你可以點擊左欄,所有列出的所有類別,點擊任何,大概你可以找到列出的'服務器'和這個每個垂直菜單類別有一些希臘字符的原始網址。 – user1356820 2012-04-28 08:17:49

+0

$ timeout = 5; $ chw = curl_init(); $ cookies = $ suppliers。'.txt'; curl_setopt($ chw,CURLOPT_POSTFIELDS,$ postData); curl_setopt($ chw,CURLOPT_URL,$ url); curl_setopt($ chw,CURLOPT_HEADER,0); curl_setopt($ chw,CURLOPT_FOLLOWLOCATION,TRUE); curl_setopt($ chw,CURLOPT_RETURNTRANSFER,TRUE); ($ chw,CURLOPT_USERAGENT,「Mozilla/5.0(Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3)Gecko/20070309 Firefox/2.0.0.3」); curl_setOpt($ chw,CURLOPT_POST,false); curl_setopt($ chw,CURLOPT_COOKIEFILE,$ cookies); – user1356820 2012-04-28 10:25:39

+0

代碼不起作用。仍然越來越外國希臘字符在他的HTML網址字符串,而不是編碼的..謝謝 – user1356820 2012-04-28 11:25:39

1

我有同樣的問題。

當我運行curl函數和url只包含英文字符時,一切都很好。

但是,當URL包含希臘字符,然後它不起作用,並返回「HTTP錯誤400.請求的URL是無效的。」

我搜索了很多和解決是使用下面的命令:

$url = mb_convert_encoding($url, "iso-8859-7", "UTF-8"); 

下面是一個完整的例子:

$ch = curl_init(); 
$url = mb_convert_encoding($url, "iso-8859-7", "UTF-8"); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
curl_setopt($ch, CURLOPT_HEADER, true); 
$page = curl_exec($ch); 
curl_close($ch);