0

残念ながら外国語の文字を含むURLが文字列に含まれています。それらをcurl_setopt($ go、CURLOPT_URL、$ url)に送信しても何も起こらず、コマンドは実行されていません。一方、Chromeブラウザを使用して、外国の文字が含まれているリンクの場所をコピーしてブラウザに貼り付けると、外国の文字が%20%D5%F0%EF%EB%EF%E3のようにエンコードされます。 %E9%F3%F4%DD%F2、%20はスペースを表すことを知っています..この変換された文字列はcurlコマンドで機能しますurlencode、iconvを使用しましたが、適切なメソッドがまだ見つかりません。結果は貼り付けられたものと一致しません。それを行う機能はありますか?チャーはギリシャ語です。どうもありがとう

4

2 に答える 2

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);
于 2014-01-10T18:43:04.977 に答える
0

その Web ページの元のエンコードは何ですか? URLとソースコードの一部を教えていただけますか?

文字列を要求された文字エンコーディングに変換してみてください

$response = html_entity_decode(htmlentities(curl_exec($ch)), ENT_COMPAT, 'UTF-8'); 
$response = iconv('windows-1253','utf-8',$response );  
于 2012-04-28T08:04:47.330 に答える