2009-08-14 6 views
5

Wenn ich mir den XML-Datenfeed anschaue, bekomme ich mit dem untenstehenden Code, Sonderzeichen sind im XML-Code korrekt. Wenn jedoch Curl die Daten zurückgibt, werden Zeichen wie "ó" und "ä" in resp. "Ö" und "¤". Diese Konvertierung erfolgt mit allen Sonderzeichen, diese 2 sind nur ein Beispiel.Zeichen in einer Curl-Anfrage geändert

$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); 

Der Header der XML-Datei sagt wie folgt "? Xml version =" 1.0" encoding = "UTF-8 zu kodieren"?“

Alles, was ich will, ist, die gleichen Zeichen zu erhalten, um im Curl-Ergebnis ohne irgendeine Umwandlung zu zeigen.

Ich hoffe, ich habe gerade einen einfachen Schritt vermisst, freue mich auf jede Antwort.

Mit freundlichen Grüßen Fons

Antwort

6

Wie wissen Sie $xmlstr das falsche Bytes enthalten? Wenn Sie sich die Ausgabe in einem Terminalfenster ansehen, ist es wahrscheinlich, dass das Problem darin besteht, dass das Terminal UTF-8 nicht unterstützt, nicht dass cURL beschädigt ist.

cURL kümmert sich nicht um UTF-8 oder irgendeine andere Zeichenkodierung - sein Job ist nur, um eine Sequenz von Bytes von irgendwo zu holen. Es ist nicht wahrscheinlich, irgendetwas zu tun, was Sonderzeichen verfehlt. Wenn etwas mit der Art und Weise, wie Sie cURL verwenden, nicht stimmt, wird alles gemangelt, nicht nur Nicht-ASCII-Zeichen.

+0

@Ionut - danke, weiß nicht, was über mich kam! –

+0

Wenn ich echo $ xmlstr benutze und in der Quelldatei nachschaue, werden die Zeichen umgewandelt. Ich verwende

als Header für die Ausgabe (html) Ihr Vorschlag ist das ändern? als wäre ich sehr glücklich zu wissen, welche Header stattdessen verwendet werden. grüße Fons – Fons

+6

Versuchen Sie, '' oben in Ihrem ' ... ' Abschnitt. –

Verwandte Themen