2017-11-23 4 views
0

Ich benutze GuzzleHTTP 6.0, um die Daten vom API-Server zu erhalten. Aus irgendeinem Grund sind die vom API-Server empfangenen Anfragen nicht UTF-8-formatiert. Die Zeichen ü,ö,ä,ß sind entstellte Zeichen.GuzzleHttp Anfrage sendet verstümmelte Zeichen

Mein Standardsystem und Datenbank ist UTF-8 codiert.

eingestellt I debug zu true im RequestOptions dies die Ausgabe ist:

User-Agent: GuzzleHttp/6.2.1 curl/7.47.0 PHP/7.0.22-0ubunut0.16.04.1 Content-type: text/xml;charset="UTF-8" Accept: text/xml" Cache-Control: no-cache Content-Length: 2175 * upload completely sent off: 2175 out of 2175 bytes <HTTP/1.1 200 OK <Server:Apache:Coyote/1.1 <Content-Type: text/xml; charset=utf-8 <Transfer-Encoding: chunked <Date: Thu, 23 Nov 2017 9:34:12 GMT <* Connection #5 to host www.abcdef.com left intact

Ich habe Ausdrücklich den Header Inhalt in UTF-8 eingestellt;

$headers = array(
     'Content-type' => 'text/xml;charset="utf-8"', 
     'Accept' => 'text/xml', 
     'Content-length' => strlen($requestBody), 
    ); 

Ich habe auch versucht mb_detect_encoding() Methode

mb_detect_encoding($requestBody,'UTF-8',true); // returns UTF-8 

weitere Ideen zu testen, mit wie kann ich dieses Problem debuggen .. ??

Antwort

0

Content-Length muss die Anzahl der Bytes enthalten, nicht die Anzahl der Zeichen. Das könnte der Grund sein, wenn Sie mbstring.func_overload verwenden. Versuchen Sie, den manuellen Satz dieser Kopfzeile wegzulassen, Guzzle wird es dann automatisch auf die richtige Weise für Sie einstellen.

Verwandte Themen