7

を使用してリモート サーバーから画像を取得しようとしていますfile_get_contents。画像への URL には、スペースや ý、á、í などの特殊文字が含まれている場合があり、その場合、操作は HTTP コード 400 - Bad Request で失敗します。urlencodeまたはを使用して URL (またはその URL のセグメント) をエンコードしようとするとrawurlencode、404 が返されます。

画像の URL にスペースや特殊文字が含まれていない場合、問題なくダウンロードされます。

これはエンコーディングと関係があるという予感がありますが、それを理解することはできません。不足しているエンコード オプションはありますか? リクエストに設定する必要があるヘッダーはありますか?

4

1 に答える 1

3

file_get_contents の問題は、UTF-8 エンコーディングです (PHP にはまだ実装されていません)。この関数を使用してファイルをダウンロードする場合は、URL で次のような操作を行う必要があります。

$url_utf8 = rawurlencode(utf8_encode($url));

以降:

$content = file_get_contents($url_utf8);

于 2013-10-15T15:09:36.023 に答える