Erledigt: Die Sache mit den Umlauten

 


toffifee
Zaungast

20.11.09
22:52 Uhr
Ist es möglich, dass ich Text komplett mit Umlauten in der MySQL-DB (UTF-8) abspeichere? Denn im Moment wird zB aus einem ö ö.
Wenn ja, wo müssen welche charsets gesetzt werden?
Link zu diesem Beitrag in die Zwischenablage kopieren
fabian
Überläufer

20.11.09
23:19 Uhr
Klar ist es möglich, aber es gibt sehr viele Fehlerquellen und jede menge Möglichkeiten, sich in den Wahnsinn treiben zu lassen. Was mir bisther immer geholfen hat war, folgendes abzuchecken:
- Woher kommt der Text? Inputfeld? PHP selbst? externe Datei?
- Ist sichergestellt, dass er auch wirklich UTF8-formatiert ist?
- ist sichergestellt dass er aus der Datenbank dann wieder als UTF8 an den Browser gesendet wird?
- ist sichergestellt, dass die PHP-Verbindung zur Datenbank beim Schreiben und auch beim Auslesen auf UTF8 gesetzt ist?
- Und ist nicht nur die Datenbank, sondern auch die Spalte selbst auf UTF8 gesetzt?

viel spaß - umlautprobleme sind fürchterlich.
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

20.11.09
23:22 Uhr
- Also Text kommt von <textarea>
- Die php Datei hat das im Header: <meta http-equiv=“Content-type“ content=“text/html; charset=utf-8“ />

Wie überprüfe ich die restlichen Punkte?
Link zu diesem Beitrag in die Zwischenablage kopieren
scopey
Stammgast

20.11.09
23:26 Uhr
dume frage. ist das php file im utf-8 format abgespeichert?
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

20.11.09
23:44 Uhr
nein, war es nicht. AARGG. scream

hat sich erledigt ;)
Link zu diesem Beitrag in die Zwischenablage kopieren
scopey
Stammgast

20.11.09
23:53 Uhr
und was war die lösung?
Link zu diesem Beitrag in die Zwischenablage kopieren
Andrea
Veteran

21.11.09
00:04 Uhr
ouw
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

21.11.09
11:33 Uhr
ja die php-datei war halt nicht im UTF-8 format... oO
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

23.11.09
20:07 Uhr
Editiert: 23.11.09, 20:21 Uhr
Jetzt bin ich total verwirrt, also:

- User gibt Text auf Seite mit <textarea> ein
- Via JS/JQuery/AJAX wird ein PHP-Skript aufgerufen, was die Daten in eine MySQL-DB speichert
- Die Datenbank an sich und alle Spalten sind utf8_general_ci codiert
- trotzdem steht in der DB zB statt ö ö

(Alle Dateien sind UTF-8 codiert.)

Das seltsamste ist, dass die Umlaute trotzdem korrekt angezeigt werden (vorher werden sie mit diesem Skript durch html-entities ersetzt:
  1. function umlaute($string){
  2. $upas = Array("ä" => "&auml;", "ü" => "&uuml;", "ö" => "&ouml;", "Ä" => "&Auml;", "Ü" => "&Uuml;", "Ö" => "&Öuml;");
  3. return strtr($string, $upas);
  4. }
Quelltext in Zwischenablage kopieren

Wie kann ich verhindern, dass die Umlaute falsch in der Datenbank gespeichert werden?
Link zu diesem Beitrag in die Zwischenablage kopieren
Clemens
Veteran

23.11.09
20:25 Uhr
Sprichst du mit der Datenbank auch in utf8?

mysql_set_charset()
oder SET NAMES utf8
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

23.11.09
20:52 Uhr
Ah danke, das hat geholfen!
Spoiler (anzeigen):

Umlaute sind echt das schlimmste, was die Menschheit je erfunden hat!
Link zu diesem Beitrag in die Zwischenablage kopieren
Clemens
Veteran

23.11.09
21:38 Uhr
Link zu diesem Beitrag in die Zwischenablage kopieren
stese
Moderator

23.11.09
23:19 Uhr
falls es mal jemand braucht: ich hab mich mal mit verschiedenen tabellen in verschiedenen kollationen rumschlagen und cleanen müssen ... sind zwar einige rechtschreibfehler drin, aber was solls:
http://www.polycoder.de/2009/06/probleme...nd-latin1/
Link zu diesem Beitrag in die Zwischenablage kopieren
 
#