Eingabe mit Umlauten
-xXx-
- php
Hallo!
Ich habe ein Problem mit dem Vergleichen einer Usereingabe mit der DB.
Der User wird erst weitergeleitet, wenn ein bestimmter Text eingegeben wurde. Es kann auch vorkommen, dass Umlaute (+Sonderzeichen) in diesem Text vorkommen. Aber immer wenn ein Umlaut in dem einzugebenden Text vorkommt, werde ich nicht weitergeleitet. Woran kann das liegen?
Danke für hilfreiche Antworten
-xXx-
Danke für hilfreiche Antworten
Denen geht eine hilfreiche Frage voraus ;-)
In deinem Fall wäre das ein Hinweis auf das was du so etwa machst. Das kann an allem möglichen liegen, an der Codierung wie du Umlaute einliest, an der Art wie die in der DB gespeichert sind ... Wahrscheinlich ists die Kombination daraus.
Hi Encoder
HTML-Datei:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
DB:
utf8_general_ci
Hilft das weiter? ;)
Mahlzeit -xXx-,
HTML-Datei:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Und wurde die Datei auch als UTF-8 (ohne BOM latürnich!) gespeichert? Liefert der Webserver sie auch mit dem korrekten HTTP-Header aus? Das <meta>-Element kommt nämlich eigentlich nur zum Tragen, wenn genau diese Information fehlt (oder wenn die Datei lokal geöffnet wird) ...
DB:
utf8_general_ci
Und die Verbindung von PHP zu MySQL? Läuft die auch auf UTF-8?
Hilft das weiter? ;)
Jein - es fehlen immer noch Informationen ...
MfG,
EKKi
»»Und wurde die Datei auch als UTF-8 (ohne BOM latürnich!) gespeichert?
Ja, wurde sie ;)
»»Liefert der Webserver sie auch mit dem korrekten HTTP-Header aus? Das <meta>-Element kommt nämlich eigentlich nur zum Tragen, wenn genau diese Information fehlt (oder wenn die Datei lokal geöffnet wird) ...
Wie kann ich das kontrollieren?
»»Und die Verbindung von PHP zu MySQL? Läuft die auch auf UTF-8?
Und wie kann ich das kontrollieren? ;)
»»Und wurde die Datei auch als UTF-8 (ohne BOM latürnich!) gespeichert?
Ja, wurde sie ;)»»Liefert der Webserver sie auch mit dem korrekten HTTP-Header aus? Das <meta>-Element kommt nämlich eigentlich nur zum Tragen, wenn genau diese Information fehlt (oder wenn die Datei lokal geöffnet wird) ...
Wie kann ich das kontrollieren?
Indem du dir die Response-Header ansieht - in Opera sieht man die Werte z.B. im Info-Paneel, in Firefox unter Extras -> Seiteninformationen.
Exakter geht das natürlich mit entsprechenden Entwicklungswerkzeugen.
»»Und die Verbindung von PHP zu MySQL? Läuft die auch auf UTF-8?
Und wie kann ich das kontrollieren? ;)
Wie schon erwähnt: SET NAMES
Mahlzeit -xXx-,
»»Liefert der Webserver sie auch mit dem korrekten HTTP-Header aus? Das <meta>-Element kommt nämlich eigentlich nur zum Tragen, wenn genau diese Information fehlt (oder wenn die Datei lokal geöffnet wird) ...
Wie kann ich das kontrollieren?
In Firefox z.B. mit einem entsprechenden Add-On ... in anderen Browser evtl. auf ähnliche Weise.
»»Und die Verbindung von PHP zu MySQL? Läuft die auch auf UTF-8?
Und wie kann ich das kontrollieren? ;)
Mittels mysql_set_charset() oder direkt per entsprechendem SQL-Befehl.
MfG,
EKKi
Also ich habe jetzt noch einmal mir die eingegebene Variable ausgegeben, und dort werden auch die Umlaute angezeigt.
Das heißt ich vergleiche z.B. das Wort 'über' (USEREINGABE) mit dem Wort 'über' (DB). Also anscheinend die gleichen Wörter, doch trotzdem funktioniert es nicht. Er gibt nur true aus, wenn keine Umlaute im Wort vorhanden sind...
Hi Encoder
HTML-Datei:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Der HTTP-Header wäre aufschlussreicher - hat aber vermutlich mit deinem problem nichts zu tun.
DB:
utf8_general_ci
Du meinst die Sortierung, die ist hier afaik nicht relevant.
Hilft das weiter? ;)
Nicht wirklich - essentiell ist, wie die PHP mit der Datenbank spricht - in MySQL lässt sich das mit SET NAMES steuern und mit welcher Zeichenkodierung PHP arbeitet.
SET NAMES war das Stichwort ;)
Habe jetzt, nachdem die DB-Verbindung hergestellt wurde, das eingefügt:
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'") or die(mysql_error());
Funktioniert jetzt auch ;)
Dankeschön :)
Der User wird erst weitergeleitet, wenn ein bestimmter Text eingegeben wurde. Es kann auch vorkommen, dass Umlaute (+Sonderzeichen) in diesem Text vorkommen. Aber immer wenn ein Umlaut in dem einzugebenden Text vorkommt, werde ich nicht weitergeleitet. Woran kann das liegen?
Mir fällt dazu Schei? encoding ein ;)
Bitte lies dir die Tipps für Fragende nochmal durch und liefere eine entsprechende Fehlerbeschreibung.
Der User wird erst weitergeleitet, wenn ein bestimmter Text eingegeben wurde. Es kann auch vorkommen, dass Umlaute (+Sonderzeichen) in diesem Text vorkommen. Aber immer wenn ein Umlaut in dem einzugebenden Text vorkommt, werde ich nicht weitergeleitet. Woran kann das liegen?
Mir fällt dazu Schei? encoding ein ;)
Hi
Ich schei..e im binmode!
mfg Beat