cURL bekommt Antwort mit utf-8-BOM

In meinem script, das ich Daten senden mit cURL und aktiviert CURLOPT_RETURNTRANSFER. Die Antwort ist json-codierte Daten. Wenn ich versuche, json_decode, gibt Sie null zurück. Dann fand ich, dass die Antwort enthält die utf-8 BOM-Zeichen am Anfang der Zeichenfolge ().

Gibt es einige Experimente:


$data = $data = curl_exec($ch);
echo $data;

das Ergebnis ist
{"field_1":"text_1","feld_2":"text_2","field_3":"text_3"}

$data = $data = curl_exec($ch);
echo mb_detect_encoding($data);

Ergebnis - UTF-8

$data = $data = curl_exec($ch);
echo mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));
//identical to echo mb_convert_encoding($data, 'UTF-8', 'UTF-8');

Ergebnis - {"field_1":"text_1","feld_2":"text_2","field_3":"text_3"}


Das einzige, was hilft, ist das entfernen der ersten 3 Symbole:

if (substr($data, 0, 3) == pack('CCC', 239, 187, 191)) {
    $data = substr($data, 3);
}

Aber was, wenn es wieder eine Stückliste? Die Frage ist also:
Wie zu erkennen, rechts Codierung von cURL Antwort? ODER wie, um zu erkennen, was BOM hat arrrived? Oder vielleicht wie konvertiert man die Antwort mit Stückliste?

Schreibe einen Kommentar