html entities

benni miles

Mitglied
Hi,

hab die Funktion htmlentities verwendet um meine Umlaute aus der mysql Datenbank korrekt auszugeben. Hatte davor immer eine Raute mit Fragezeichen anstelle der Umlaute. So weit so gut nun funktioniert die Ausgabe der Umlaute jedoch wird leider auch das größer und kleiner Zeichen replaced so das es zb bei <br /> nicht mehr funktioniert sondern genauso ausgegeben wird. Gibts hier irgendeine schnelle Lösung oder soll ich den ganzen String nach den ersetzten größer und kleiner Zeichen durchsuchen und sie dann wieder rückersetzen lassen vor der Ausgabe?

lg
 
Damit verhindert man ja den besten effekt von htmlentities, das kein Böswilliger HTML Code eingefügt werden kann.

Speichere am besten die einträge mit "\n" in der Datenbank... also normale Enter-Zeilenumbrüche und mache nach den htmlentities ein nl2br().

Wenn sie schon kaputt in der Datenbank steen und dir egal ist as HTML frei verwendet wird kannst du mit str_replace sie wieder zurückumwandeln.
 
Wenn du mit dem richtigen Encoding auf die Datenbank zugreifst, und auch die HP das richtige Charset verwendet, brauchst du die Umlaute nicht in HTML-Entities umwandeln. Mittlerweile sollte jeder gängige Browser UTF-8 unterstützen.
 
Das Problem ist habe alles auf UTF-8 gesetzt und wird auch richtig in die Datenbank eingetragen allerdings bei der Ausgabe wird eine Raute mit Fragezeichen ausgegeben. Das kann ich mit htmlentities umgehen. Allerdings habe ich das wie zuvor beschriebenen Problem
 
Du brauchst es aber nicht "umgehen", es hat einen Sinn und Zweck, das UTF-8 eingeführt wurde und ist die Lösung für deine Problem. Anscheinend erfüllt dein Projekt eine oder mehrere der Kriterien nicht:

1. Verbindung von PHP zum MySQL-Server ist nicht unicode
- Kann gelöst werden mit einem SQL-Query, den man zu aller erst, also vor allen andern sendet: "SET NAMES utf8"

2. Datenbanken/Tabellen insbesondere Text- und (var-)char-Spalten sind nicht in utf8_unicode_ci
- Kann problemlos mit diversen Scripten gelöst werden, die überall verfügbar sind, Stichwort "MySQL utf8 konvertieren"

3. Die Ausgabe der Homepage ist im Default-Charset, was im Webserver eingestellt ist, also häufig ISO-8859-1, welcher der amerikanische Zeichensatz ist.
- Kann gelöst werden, durch die richtigen Header:
PHP:
header('Content-Type: text/html; charset=utf-8');


Grüße
 
Hab das Problem nun gelöst allerdings kann mir jemand erklären wieso das nun funktioniert. Habe die charset im html Dokument von

HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

auf

HTML:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

umgstellt. Nun werden alle Umlaute richtig dargestellt. Mysql Tabs sind auf utf8_unicode_ci definiert.

lg
 
Installier dir mal die Firefox-Erweiterung "Live HTTP Headers" und schau, welcher Content-Type bei der Antwort vom Server übertragen wird.
 
Zurück