• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

HTML-Umlaute trotz htmlentities()

Status
Für weitere Antworten geschlossen.

Sn0opy

Neues Mitglied
Hiho,

ich möchte einen Eintrag aus nem Input-Feld in eine Datenbankschreiben. Dieser enthällt Umlaute. Bekanntlich können Umlaute in UTF-8 nicht dargestellt werden und müssen mit ä etc. setzt werden.

Das Problem ist: Bevor ich den selben Eintrag ausgebe, lasse ich ihn durch htmlentities() laufen, sodass man keine HTML Zeichen mehr benutzen kann. Leider gibt es dort ein Problem. Die Umlaute werden nicht "übersetzt", sondern die Zeichen, die bei UTF-8 rauskommen, werden übersetzt. Bedeutet, dass ich im Quelltext statt dem gewünschtem ü nun ü dort stehen habe.

Wie kann ich das beheben ohne nun direkt den / das (?) Charset der Seite zu ändern?
 
Werbung:
wenn du beim schreiben in die DB schon htmlentities() verwendest, musst du es bei der ausgabe ja nicht nochmal verwenden.

Sonst kannst du ja vor der ausgabe mit he() die betreffenden Zeichen ersetzten.
oder einfach wieder in HTML umwandeln mit html_entity_decode().

ist dann aber irgendwie auch nicht der Sinn oder ?

hab glaub nicht ganz verstanden wie du es meinst :D
 
Also, beim schreiben in die Datenbank benutz ich gar nichts. Der Text wird so in die Datenbank geschrieben, wie er in das Feld geschrieben wurde.

Ausgegeben wird der Text mit htmlentities(). Dabei werden nicht die Umlaute durch &xuml; ersetzt, sondern die Fehlerhaften Zeichen, die angezeigt werden, wenn man Umlaute in einer Seite mit UTF-8 schreibt. Bedeutet, dass dieses Ä1/4 (so in etwa sieht glaube das ä aus). Dann eben durch die entsprechenden HTML-Zeichen ersetzt wird.

So etwa verständlicher?
 
Werbung:
Bekanntlich können Umlaute in UTF-8 nicht dargestellt werden und müssen mit ä etc. setzt werden.
Wer hat dir das denn erzählt?
Gerade dafür ist UTF-8 doch gut. Umlaute und weitere Sonderzeichen müssen nicht maskiert werden.
Wenn du also alle Instanzen deiner Page (Datenbank, PHP-Datei, Header und Metatag) auf UTF-8 stellst, kann dir nichts passieren.
 
Hmmm, mal nen anderes Beispiel. Ich hab mir grad ne stinkormale HTML Datei erstellt mit folgendem Meta-Tag

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

Wenn ich nun die Umlaute in den Body einfüge werden die nicht dargstellt. In Opera hab ich 3 Striche, in Firefox hab ich 3 Fragezeichen (Font: Trebuchet MS)

Darum bin ich atm bischen verwirrt ^^
 
Ja... :)

Der Metatag verwirrt auch den Browser, wenn du das Dokument selbst anders enkodierst, als du es ihm mitteilst.
Du musst also irgendwo im Editor (welchen benutzt du?) die Kodierung des Dokuments umstellen.
 
Werbung:
Benutze Notepad++. Hast aber recht, wenn ich die Datei als UTF-8 abspeichere, werden die Zeichen richtig dargstellt. Kannste ich persönlich noch nicht ^^ Ich werde das morgen mal mit dem eigentlichen Script machen und dann posten, ob es funktioniert hat, oder nicht. Wobei ich doch mal denke, dass es dann keine Probleme mehr geben sollte.
 
würde den Datenbank eintrag mindesten mit mysql_real_escape_string() absichern, sonst kann man deine DB ja voll umgraben =)
 
würde den Datenbank eintrag mindesten mit mysql_real_escape_string() absichern, sonst kann man deine DB ja voll umgraben =)

Logischerweise mache ich sowas natürlich, was ging mir speziell nun nur darum, dass ich Probleme mit den Umlauten habe und nur zeigen wollte, dass ich sonst nichts ändere, bevor ich sie in die DB eintrage.
 
Werbung:
wenn das alles nichts bringt, dann schreib' eben einen konverter, der das schon abgeändert in die DB schreibt oder sonst wo speichert.

Nils aka XraYSoLo
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben