2009-08-14 28 views
5

Khi tôi xem nguồn cấp dữ liệu XML tôi nhận được với mã bên dưới, các ký tự đặc biệt là chính xác trong mã XML. Tuy nhiên khi Curl trả về dữ liệu, các ký tự như "ó" và "ä" được chuyển đổi thành resp. "ó" và "ä". Chuyển đổi này xảy ra với tất cả các ký tự đặc biệt, 2 ký tự này chỉ là một ví dụ.ký tự thay đổi trong yêu cầu Curl

$myvar = curl_init(); 
$myURL = "http://someurl.com/"; 
curl_setopt($myvar, CURLOPT_USERAGENT, '[Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2")]'); 
curl_setopt($myvar, CURLOPT_URL, $myURL); 
curl_setopt($myvar, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($myvar, CURLOPT_TRANSFERTEXT, TRUE); 
curl_setopt($myvar, CURLOPT_CONNECTTIMEOUT,3); 
$xmlstr = curl_exec ($myvar); 

Tiêu đề của tệp XML nói để mã hóa như sau "? Xml version =" 1.0 "encoding =" UTF-8 "?"

Tất cả những gì tôi muốn là nhận các ký tự giống nhau để hiển thị trong kết quả Curl mà không có bất kỳ phép chuyển đổi nào.

Hy vọng tôi vừa bỏ lỡ một số bước dễ dàng đơn giản, mong chờ mọi câu trả lời.

Trân trọng Fons

Trả lời

6

Làm thế nào để bạn biết $xmlstr chứa các byte sai? Nếu bạn đang nhìn vào đầu ra trong một cửa sổ đầu cuối của một số loại, nó có thể xảy ra rằng vấn đề là thiết bị đầu cuối không hỗ trợ UTF-8, không phải là cURL bị hỏng.

cURL không quan tâm đến UTF-8 hoặc bất kỳ mã hóa ký tự nào khác - công việc của nó chỉ là tìm nạp chuỗi các byte từ đâu đó. Nó không có khả năng làm bất cứ điều gì mà sẽ mangle ký tự đặc biệt. Nếu có điều gì đó sai trái với cách bạn đang sử dụng cURL, nó sẽ mang lại tất cả mọi thứ, không chỉ các ký tự không phải ASCII.

+0

@Ionut - cảm ơn, không biết điều gì đã đến với tôi! –

+0

Khi tôi sử dụng echo $ xmlstr và tìm trong mã nguồn, các ký tự được cuộn xuống. Tôi sử dụng

làm tiêu đề cho đầu ra (html) đề xuất của bạn sẽ thay đổi điều đó? hơn tôi sẽ rất vui khi biết tiêu đề để sử dụng thay thế. liên quan Fons – Fons

+6

Hãy thử thêm '' ở đầu phần ' ...' của bạn. –

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