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 />";

}
Antwort bewerten Vielen Dank für Deine Bewertung

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.



Antwort bewerten Vielen Dank für Deine Bewertung

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^^


Antwort bewerten Vielen Dank für Deine Bewertung

"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.  

 

Antwort bewerten Vielen Dank für Deine Bewertung

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?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von niki308
26.11.2015, 21:57

php.ini :

mbstring.func_overload => 0 => 0

0

Was möchtest Du wissen?