Umlautproblem MySQL - mal korrekt, mal nicht

Thomas D

Erfahrenes Mitglied
Hallo!

Ich habe eine MySQL-Datenbank, in der Benutzer sich registrieren können. Dabei habe ich die interessante Beobachtung gemacht, dass bei manchen Benutzern die Umlaute korrekt gespeichert werden, bei anderen widerum nicht (ä statt ä, oder ö statt ö). Woran kann es liegen, dass manche User richtig speichern können, andere widerum nicht? Liegt das am Browser und wenn ja, wie kann ich hier mir Abhilfe verschaffen, dass es auch wirklich immer richtig gespeichert wird?

MfG, Thomas D.
 
Hi,

mit welchen Headern lieferst Du das Formular aus? Ich würde der Seite noch einen entsprechenden Meta-Tag verpassen mit der Kodierung und ein accept-charset im Formular kann auch nicht schaden.
Sieht so aus, als würdest Du es den Browsern überlassen, in welcher Kodierung die Daten übertragen werden.

LG
 
Könntest du mir vielleicht ein paar Code-Schnipsel zeigen, wie ich das machen soll? Kenne mich diesbezüglich nämlich leider nicht sehr aus ...
 
Hi,

nee, HTML-Entitäten gehören nicht in die Datenbank.

Mal ein Beispiel für UTF-8.
in der PHP-Datei, die die Registrierungsseite ausgibt:

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

Im HTML-Teil:

HTML:
<!-- im head-Bereich: -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- im Formular: -->
<form action="..." method="post" accept-charset="UTF-8">

Und dann mal auf verschiedenen Betriebssystemen mit verschiedenen Browsern ausprobieren.

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

Danke, habe ich hinzugefügt. Schauen wir mal, ob's was bringt.

Im HTML-Teil:

HTML:
<!-- im head-Bereich: -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- im Formular: -->
<form action="..." method="post" accept-charset="UTF-8">

Hier habe ich iso-8859-1 verwendet. UTF-8 bewirkt bei meinem Browser (Opera) schon einmal eine fehlerhafte Umlautausgabe. Wie gesagt, schauen wir mal, ob's nun funktioniert :) ...

Thx, Thomas D.
 
Hi,

Du musst das natürlich einheitlich machen. Wenn Du im HTML-Dokument ISO-Latin verwendest, ISO-latin in die DB schreibst und wieder ausliest, musst Du die Seite auch mit ISO-latin ausliefern. Also überall die gleiche Kodierung verwenden.

LG
 
Zurück