problem mit kodierung per htmlentites()
Mr. T
- php
Hallöchen!
Ich will mit PHP die Ergebnisse einer Suche ausgeben und da in den Suchergebnissen häufig Umlaute vorkommen wollte ich diese mit der Funktion htmlentities() erstmal kodieren, damit sie dann richtig angezeigt werden.
Nun das Problem:
htmlentities gibt mir aber zB. "Böhmen" statt "Böhmen" zurück
demnach müsste der String ja vor der Umwandlung etwa so lauten: Böhmen
wenn ich mir allerdings ein Array per print_r ausgeben lasse ist alles ganz normal
hab ich die Methode irgendwie falsch verstanden oder woran liegt das?
Mahlzeit Mr. T,
Ich will mit PHP die Ergebnisse einer Suche ausgeben und da in den Suchergebnissen häufig Umlaute vorkommen wollte ich diese mit der Funktion htmlentities() erstmal kodieren, damit sie dann richtig angezeigt werden.
Warum? Wieso nutzt Du nicht eine passende Zeichencodierung, die mit allen erdenklichen Zeichen umgehen bzw. diese darstellen kann (wie z.B. UTF-8)?
Nun das Problem:
htmlentities gibt mir aber zB. "Böhmen" statt "Böhmen" zurückdemnach müsste der String ja vor der Umwandlung etwa so lauten: Böhmen
Aha - anscheinend benutzt bereits *IRGENDETWAS* UTF-8 ... ich würde Dir empfehlen, sämtliche Dateien darauf umzustellen und den Code dahingehend zu überarbeiten, dass UTF-8-codierte Strings verarbeitet werden können.
MfG,
EKKi
Aha - anscheinend benutzt bereits *IRGENDETWAS* UTF-8 ... ich würde Dir empfehlen, sämtliche Dateien darauf umzustellen und den Code dahingehend zu überarbeiten, dass UTF-8-codierte Strings verarbeitet werden können.
Problem hat sich gelöst.
Habe mich vertippt (UTF8 statt UTF-8)
Jedefalls danke!!
Moin
demnach müsste der String ja vor der Umwandlung etwa so lauten: Böhmen
wenn ich mir allerdings ein Array per print_r ausgeben lasse ist alles ganz normal
Du solltest dich mit Zeichenkodierungen beschäftigen. Böhmen scheint UTF8 codiert zu sein. Wenn du deiner Seit eim Header utf-8 Codierung verpasst müsste die Ausgabe korrekt sein. Dann benötigst du keine Funktion htmlentities(), sondern nur htmlspecialchars()...
Wenn du wirklich mit htmlentities ausgeben willst musst du den String vorher decodieren. ungefähr so: htmlentities(utf8_decode($string))
Gruß Bobby
Hi!
Wenn du wirklich mit htmlentities ausgeben willst musst du den String vorher decodieren. ungefähr so: htmlentities(utf8_decode($string))
Nein, muss man nicht, htmlentities() kennt einen charset-Parameter, den man mit 'UTF-8' füttern kann. Das Umkodieren wäre auch kontraproduktiv, denn dann könnte man ja gleich bei ISO-8859-1 bleiben, denn alles andere geht bei utf8_decode() verloren.
Lo!
Hi,
Nun das Problem:
htmlentities gibt mir aber zB. "Böhmen" statt "Böhmen" zurück
Bist Du sicher, htmlentities iso-latin codierte strings zu übergeben? Oder kommen die möglicherweise utf-8 codiert aus der Datenbank?
Aber wozu das? Wenn Deine Datei in Iso-Latin abgespeichert ist, und das Html als derart codierte Datei ausgeliefert wird, brauchts das nicht.
Gruesse, Joachim