2009-08-14 13 views
5

Kiedy patrzę na plik danych XML, otrzymuję poniższy kod, znaki specjalne są poprawne w kodzie XML. Jednak gdy Curl zwraca dane, znaki takie jak "ó" i "ä" są konwertowane na resp. "Ó" i "¤". Ta konwersja dzieje się dla wszystkich znaków specjalnych, te 2 są tylko przykładem.znaków zmieniono w żądaniu 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); 

Nagłówek pliku XML mówi zakodować następująco "? Xml version =" 1.0" encoding = "UTF-8"?”

Wszystko, czego chcę, to uzyskanie tych samych znaków, które pojawią się w wyniku Curl bez żadnej transformacji.

Nadzieję, że po prostu brakowało mi jakiegoś prostego kroku, czekając na wszelkie odpowiedzi.

poważaniem Fons

Odpowiedz

6

Skąd wiesz $xmlstr zawiera błędne bajty? Jeśli patrzysz na dane wyjściowe w jakimś oknie terminala, prawdopodobnie problem polega na tym, że terminal nie obsługuje UTF-8, a nie że cURL jest zepsuty.

cURL nie dba o kodowanie UTF-8 lub inne kodowanie znaków - jego zadaniem jest po prostu pobranie sekwencji bajtów skądś. Prawdopodobnie nie zrobi nic, co zmobilizuje specjalne postacie. Jeśli coś jest nie tak ze sposobem, w jaki używasz cURL, wszystko będzie zmanipulować, nie tylko znaki spoza ASCII.

+0

@Ionut - dziękuję, nie wiem, co mnie spotkało! –

+0

Kiedy używam echo $ xmlstr i szukam w pliku źródłowym znaki są ukryte. Używam

jako nagłówka dla wyjścia (html) Twoja sugestia to jest zmiana? niż byłbym bardzo szczęśliwy, wiedząc, jaki nagłówek użyć zamiast tego. pozdrowienia Fons – Fons

+6

spróbuj dodać '' na górze sekcji ' ...'. –