PHP foreach utf-8 encoding Probleme?

...komplette Frage anzeigen

5 Antworten

Versuch' mal

header('Content-Type: text/html; charset=UTF-8');

bzw.

header('Content-Type: text/html; charset: iso-8859-1');

und

foreach ($headline[0] as $key => $value) {

    echo utf8_encode($value) . "<br />";

}

"Alle ü, ö, ä, ß (UTF-8 halt)": ü, ö, ... ist kein UTF-8, sondern umlaute. für diese gibt es keine einheitliche darstellung im speicher. sondern verschiedene:

UTF-8 eben. aber auch iso-8859-1, auch auch latin-1 genannt; es gibt noch andere.

die spiegel.de seite benutzt nun aber iso-8859-1, wenn du jetzt dein hml den spiegel-inhalt als utf-8 ausgibst, hast du genau diesen effekt: die iso-darstellung ist ein ungüliges zeichen für UTF-8 und der browser stellt es durch ein ersatzzeichen dar.  

 

Soweit sieht das okay aus, zwei Dinge könntest du einmal prüfen:

1. Sind deine PHP Dateien im UFT-8 Format abgespeichert?

2. Hast du die mbstring extensions in deiner PHP Installation aktiviert (siehe http://php.net/manual/de/book.mbstring.php)? Und in der php.ini mbstring.func_overload gesetzt?

php.ini :

mbstring.func_overload => 0 => 0

0
@niki308

Versuch mal 7, aber wie gesagt, das ist nur eine mögliche Fehlerquelle.

0

Nutz diese Single-Instance-Klasse: http://pastebin.com/As0PWyU6


Hat viele Funktionen, die man häufiger braucht, wenn man mit UTF-8 arbeitet. (Setzt direkt den Header usw)


Einfach direkt am anfang includieren^^


Wie bereits erwähnt hängt die Codierung der Zeichen von der Quellseite ab, dein Code müsste dementsprechend die Strings konvertieren.


Allerdings frage ich mich, weshalb du nicht die Standard-Lösung über RSS verwendest:


$url = 'http://www.spiegel.de/index.rss';
$contents = file_get_contents($url);
$xml = simplexml_load_string($contents);
$object = json_decode(json_encode($xml));

das ist wesentlich einfacher (und schneller) als das scrapen der HTML-Seite.


Zudem bieten vermutlich ALLE Nachrichten Seiten einen Feed an.



Was möchtest Du wissen?