Serear Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 Hallo zusammen, ich habe ein kleines Problem. Und zwar schreibt PHP die Umlaute die in Eingabemasken eingegeben wurden sind, nicht korrekt in die Datenbank. Habe mich jetzt schon ein wenig Schlau gemacht und viel rumprobiert. HTML-Charset = UTF-8 Wenn ich das Charset im HTML-Tag weg nehme, schreibt er die richtigen Umlaute in die Datenbank, stellt dafür natürlich aber nur Fehler am Bildschirm da. D.h. ich bräuchte irgendwie eine Konvertierung beim inserten, von UTF-8 auf UCS-2 ist das mein ich, von MSSQL. Wäre echt klasse, wenn einer von euch ne Idee hat. Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 Ich meine, ohne mich jetzt darauf fest zu nageln, dass PHP intern alles ISO-Latin-1 handelt, d.h. wenn Du UTF8 Daten in Deine PHP Datei bekommst, musst Du diese via utf8_decode decodieren und dann eben passend für Deine Datenbank codieren, bevor Du sie schreibst.Wenn Du Daten aus der Datenbank holst, musst Du sie eben für PHP wieder nach ISO Latin codieren und wenn die Ausgabe UTF8 sein soll, eben mit utf8_encode passend codieren. Evtl hilft Dir PHP: mb_internal_encoding - Manual weiter, aber Du müsstest das halt generell überall konsequent einsetzen. Alternativ würde ich die Datenbank auf UTF8 umstellen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Carlos87 Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 Und zwar schreibt PHP die Umlaute die in Eingabemasken eingegeben wurden sind, nicht korrekt in die Datenbank. Zeig mal den Betreffenden Quellcode. Sonst ist es das Problem nicht nachvollziehbar. Vermutung: Vielleicht behandelst du die Formulardaten falsch, bevor du sie in die Datenbank speicherst. Tipp: Die Formulardaten, immer mit mysql_real_escape_string behandeln, bevor sie in die Datenbank gespeichert werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ennor Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 Die Verbindung zur DB und die Standardzeichencodierung spielt bei MSSQL-DBs da nicht so die große Rolle. Neben dem im Header angegebenen Zeichensatz kommt es ebenfalls auf die Codierung der PHP-Dateien an. Diese müssen ebenfalls als UTF-8 Datei auf dem Server liegen. Aus dem phpforum.de: UTF-8 - PHP Forum: phpforum.de Dateien (PHP-Dateien, CSS-Dateien, JS-Dateien, usw. usf.) müssen in UTF-8 gespeichert werden. Daten in der Datenbank (Daten in Tabellenzellen) Verbindungen zu Datenbanken (Der Weg, auf dem die Daten von PHP zur Datenbank geschickt werden) Anzeige im Client (Dem Browser muss mitgeteilt werden, dass die Webseite in UTF-8 vorliegt) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 Die Formulardaten, immer mit mysql_real_escape_string behandeln, bevor sie in die Datenbank gespeichert werden. Hier ging es um MS SQL und nicht um MySQL Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jejerod Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 user@host:~> echo $LANG de_DE.UTF-8 user@host:~> php -m | grep iconv iconv user@host:~> php <?php $input = "Dies ist ein Satz mit Umlauten: ÄÖÜäöüß"; $ucs2 = iconv("UTF-8","UCS-2",$input); echo "UTF-8 => $input \t UCS-2 => $ucs2\n"; ?>[/PHP] UTF-8 => Dies ist ein Satz mit Umlauten: ÄÖÜäöüß UCS-2 => Dies ist ein Satz mit Umlauten: ������� Könnte helfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 Könnte helfen. ja, könnte es, sofern es in der PHP Installation eincompiliert wurde PHP: iconv - Manual This extension is enabled by default, although it may be disabled by compiling with --without-iconv . Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jejerod Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 ja, könnte es, sofern es in der PHP Installation eincompiliert wurde Daher mein vergewisserndes php -m | grep iconv. Gewöhnlich ist es als Extension modular vorhanden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 Daher mein vergewisserndes php -m | grep iconv. Gewöhnlich ist es als Extension modular vorhanden. Kann man aber nur machen, wenn man auf die Konsole kommt, was bei einem Webhoster wohl nicht möglich ist. Da würde man dann PHP: get_loaded_extensions - Manual nehmen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jejerod Geschrieben 13. September 2011 Teilen Geschrieben 13. September 2011 Kann man aber nur machen, wenn man auf die Konsole kommt, was bei einem Webhoster wohl nicht möglich ist. Richtig. 95% der Leute schauen idR dann auf ihr phpinfo(), da findet man auch alles. Andererseits ist die Wahrscheinlichkeit für einen Webhoster gering, da findet sich dann doch eher MySQL. Bei MSSQL gehe ich daher von einem internen/DMZ Setup aus - also mit guter Chance auf eine Shell. Ich hatte oben auch nur das, was mir in den Kopf kam, auf der Shell getestet und in den Thread gepostet. Der TE kann sich dann ja seine Gedanken dazu machen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.