2012-05-01 94 views
6

Tôi đang cố tải hình ảnh từ máy chủ từ xa bằng cách sử dụng file_get_contents. URL tới một hình ảnh có thể chứa khoảng trắng và/hoặc các ký tự đặc biệt như ý, á, vv, và khi nó hoạt động không thành công với mã HTTP 400 - Yêu cầu Xấu. Nếu tôi cố gắng mã hóa url (hoặc phân đoạn của URL đó), sử dụng urlencode hoặc rawurlencode, tôi nhận được 404.file_get_contents - ký tự đặc biệt trong URL

Khi URL hình ảnh không chứa dấu cách và ký tự đặc biệt được tải xuống mà không gặp sự cố.

Tôi có linh cảm rằng điều này có liên quan đến mã hóa nhưng tôi không thể hiểu được. Có tùy chọn mã hóa nào bị thiếu không? Có tiêu đề nào phải được đặt cho yêu cầu không?

+2

http://stackoverflow.com/questions/2236668/file-get-contents-breaks-up-utf-8-characters –

+1

alickus: Đó không phải là thực sự một bản sao, câu hỏi bạn đã liên kết là về UTF-8 trong nội dung phản hồi chứ không phải URL. – Kaivosukeltaja

+1

Mở hình ảnh đó trong trình duyệt của bạn. Xem cách trình duyệt mã hóa URL. Sau đó, xem đầu ra của 'echo urlencode ($ url);' và tìm sự khác biệt – galymzhan

Trả lời

1

Vấn đề với file_get_contents là bảng mã UTF-8 (đã chưa được thực hiện trong PHP) Nếu bạn muốn tập tin tải về với chức năng này, bạn phải làm một cái gì đó như thế trên URL của bạn:

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

Và sau:

$content = file_get_contents($url_utf8);

+1

Điều này có thể dẫn đến kết quả không được đoán trước trừ khi tệp PHP được lưu dưới dạng 'ISO-8859-1'. –

Các vấn đề liên quan