Ich muss mit simpl_html_dom deutsche Seite analysieren. Ich habe ein Problem mit deutschen Umlauten, weil utf-8 Umlaute nicht unterstützt. Ich weiß, wenn Text von UTF-8 in UTF-16 oder ISO-8859-1 Problem zu lösen. Ich benutze CURL für Inhalt Seite zu bekommen. Diese Seite hat ISO-8859-1 Zeichensatz. Ich versuche CURLOPT_ENCODING ISO-8859-1, aber Curl immer den UTF-8-Text zurückgeben.Ich weiß nicht, was zu tun. Code dieser Methode.Warum Curl Charset nicht ändern?
public function testsec()
{
require_once DIR_SYSTEM.'library'.DIRECTORY_SEPARATOR.'simpleHtml'.DIRECTORY_SEPARATOR.'simple_html_dom.php';
$regexpSecond = "~Möglicherweise.*? Vielen Dank~su";
$headers = array(
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",
"Accept: text/plain",
"Connection: keep-alive",
);
$fp = fopen(DIR_ADMIN.'logCurl.txt','w+');
$head = fopen(DIR_ADMIN.'headers.txt','w+');
$curl = curl_init("http://test.site.com/bla-bla-bla");
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_ENCODING , "UTF-16");
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_STDERR, $fp);
curl_setopt($curl, CURLOPT_HEADER ,$headers);
curl_setopt($curl, CURLOPT_WRITEHEADER, $head);
$result = curl_exec($curl);
curl_close($curl);
fclose($fp);
fclose($head);
$html = str_get_html($result);
echo mb_detect_encoding($result); //utf-8
}
Headers Reaktion
HTTP/1.1 200 OK
Date: Sun, 03 Jul 2016 05:22:34 GMT
Server: Apache
Set-Cookie: JTLSHOP=c1qv3vafghmf3ih43g5m96epi4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: max-age=1, private, must-revalidate
Pragma: no-cache
Vary: Accept-Encoding
X-Powered-By: PleskLin
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
Das ist nicht, wofür CURLOPT_ENCODING ist, es ist nicht für Zeichensatzcodierungen, es ist für gzip. Wenn der Antwort-Header sagt, dass es iso-8859-1 ist, dann ist es wahrscheinlich iso-8859-1, aber du hast die URL nie gepostet, so dass wir es nicht sagen können. – pguardiario