Jetzt Mitglied werden
Kostenlos registrieren und die vielen Vorteile der Webmasterpro-Mitgliedschaft nutzen.
Forum - Entwicklung
- Markup (HTML, XML, etc.) und CSS
- Skriptsprachen (PHP, Javascript, etc.)
- Datenbanken (SQL)
- CMS und Frameworks
- Flash und ActionScript
Info: Der Stern signalisiert, dass neue Beiträge vorhanden sind.
Alle Foren - Übersicht
Portal aktuelle Themen
Design aktuelle Themen
Server aktuelle Themen
- Webhosting und Webspace
- Betriebssysteme (Windows, Linux, etc.)
- Serveradministration
- Überwachung, Sicherheit und Backups
Management aktuelle Themen
Über Webmasterpro.de
Das Portal wird betrieben und entwickelt durch die Team23 Agentur. Die Augsbuger Agentur hat sich auf Community Software und die Entwicklung von Webportalen spezialisiert.
Datenbanken (SQL) - Forum
Derzeit sind Sie als Gast in unserem Forum aktiv. Für das Schreiben registrieren Sie sich bitte. Unser Forum ist eine Austauschplattform für Webworker zum Kommunizieren, Helfen, Informieren und Hilfe finden. Auf der rechten Seiten finden Sie eine Forenübersicht über alle Bereiche des Webmaster-Forums. Unterhalb finden Sie alle aktuellen Themen.
Zeichenkodierung und Umlaute
Hallo,
ich habe ein massives Problem mit den Umlauten in meiner DB bzw. in der Ausgabe.
Ein Formular schickt von Seitenbesuchern eingegebene Daten an meine DB (MySQL bei 1&1) und ich rufe diese in einem Backend ab.
Habe jetzt einiges versucht, aber komme immer wieder zu dem Punkt, dass es mit einem Browser funktioniert, mit dem anderen nicht !! (FF3 vs. IE bzw. FF2).
Meine bisherigen Versuche lagen darin,
1. mit dem Doctype bzw. charset des abschickenden Formulars sowie der anzeigenden Seite im Backend herumzuspielen
2. mit der Kodierung in der DB herumzuspielen (phpMyAdmin)
3. mittels SQL mit SET Names und/oder SET CHARACTER SET herumzuexperimentieren (siehe hier: http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html).
Teilweise stimmten die Einträge in phpMyAdmin, aber nicht im Backend, teilweise stimmten sie in beiden Darstellungen nicht, oder es wurden nur ??? übertragen und schließlich wurde auch mal ein leerer Datensatz gespeichert!!!
Die besten Lösungen waren so, dass ich eine Lösung hatte, die funktioniert, wenn ich das Formular mit FF2 oder IE(habe 8) abschicke - aber nicht mit FF3! Oder eben umgekehrt. Werde noch wahnsinnig.;-( Vor allem ist das Testen mit mehreren systemen nervig (und auch fehleranfällig) - es kann doch nicht sein, dass das browserspezifisch ist! Oder ignoriert/korrigiert der FF3 irgendwas, was die anderen nicht machen?
Habt Ihr Tipps?
Welchen Zeichensatz willst du denn verwenden?
Wenn UTF-8, hier ein paar Tipps:
- Alles muss in UTF-8 vorliegen! Auch die Dateien selber müssen in UTF-8 gespeichert werden (kannst du im "Speichern unter"-Dialog deines Texteditors vermutlich einstellen - ansonsten werden Umlaute im Code (sofern da welche sind) zerschossen
- Die gewohnten String-Operationen von PHP können nicht mit UTF-8 umgehen. Nutze hierfür die Pendants aus dem Multibyte String Funktionen-Paket
- Die DB muss komplett auf UTF-8 laufen:
- Die Tabellen und Felder müssen auf UTF-8 gestellt werden
- Die Connection selber muss auch auf UTF-8 gestellt werden! Ich mach immer
SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'
- Die Ausgabe sollte auch irgendwie auf UTF-8 hinweisen. Entweder per Header der gesendet wird oder per meta-tag oder so
Ich würde mal in Ruhe mit neuen Daten testen bis alles vernünftig ist. Danach dann deine bisherigen Daten (sofern die wichtig sind) umstellen/konvertieren. Das könnte aber echt haarig werden...
Hab es gestern Nacht durch striktes Überprüfen, ob alles utf-8 ist, noch so hingekriegt, dass die Ausgabe nun korrekt ist (mit allen Browsern). In PHPMyAdmin sieht es dafür aber kryptisch aus. Ich hatte das SET Names / CHARACTER letztendlich weggelassen und war/bin froh, dass es jetzt erstmal so funktioniert, aber werde noch weiter testen. Danke für die Hinweise und den link (multistring).
Das ist echt so verflixt mit der Codierung, hatte schon öfter Probleme und hab mir jedesmal vorgenommen, das nächste Mal beim lokalen Testen darauf zu achten, von Anfang an gleiche Datenbank-Bedingungen einzustellen (soweit das möglich ist) - und vergess es dann doch wieder!
Super! Deine Lösung für die MySQL-Verbindung (SET...) funktioniert jetzt astrein! Die alten Daten sind futsch (waren ja bisher zum Glück nur tests), aber neuen werden überall exakt interpretiert!!
Danke!
Auch bei phpmyadmin? Wenn das da noch zerschossen ist, ist immer noch was im argen...
Ja, auch da! Der Rest war ja vorher schon ok.
Oder meinst Du jetzt die alten Daten? Die hab ich ja unter anderen Bedingungen geschrieben - (hab ich auch mittlerweile gelöscht)...
Hallo miteinander,
Gerne würde ich an diesen Thread anknüpfen, da sich meine Problematik auch bei den Umlauten mit MySQL befindet.
Grundsätzlich ist alles auf UTF-8 eingestelllt: Browser, Ausgabe in HTML, MySQL.
MySQL verwednet überall utf8_general_ci.
Problem: Im Browser werden die Umlaute richtig dargestellt, in der MySQL Datenbank werden sie hieroglyphenartig dargestellt (ä => ä, ö =>ö, ü => ü, etc).
Die ganze Verarbeitung geschieht in PHP, wobei ich nicht von String-Funktionen Gebrauch mache (welche nicht mit UTF8 auskämen).
Wo ligt hier das Problem? Den Code mit SET... von Max B habe ich schon probiert, ändert jedoch nichts :-(
Vielen Dank für Tipps,
Alex
