Nach Umlaut abgeschnitten, Ausgabe falsch |
brain_surgery
skype: energon-soup
Dabei seit: 09.02.2005
Beiträge: 973
Herkunft: austria Name: Nathalie
|
|
Nach Umlaut abgeschnitten, Ausgabe falsch |
|
Hallo GB,
Ich bin gerade ein wenig am Ende mit meinem Latein.
Aus irgendeinem Grund funktionieren plötzlich die Umlaute in meinem Code nicht mehr so wie sie sollen.
Will ich einen Umlaut per Formular in die Datenbank speichern, dann wird der Umlaut nicht gespeichert und alles nach dem Umlaut abgeschnitten. Will ich Umlaute aus der Datenbank ausgeben, werden die als Kauderwelsch angezeigt.
Ich habe
header('Content-Type: text/html; charset=utf-8');
und
<meta http-equiv="content-type" content="text/html; charset=utf-8>
eingefügt, außerdem sichergestellt dass die Datenbank in utf-8-general-ci formatiert ist. Meine php Dateien sind teilweise in ANSI, teilweise in UTF-8 ohne BOM gespeichert.
Wenn sie im HTML stehen, werden die Umlaute einwandfrei angezeigt.
Was mich wundert ist, dass das ganze bisher eigentlich prächtig funktioniert hat, nur jetzt eben nicht mehr. Ich bin ratlos. >:
Weiß da eventuell jemand weiter?
Lg
EDIT: Wenn ich das ganze auf latin-1-german-ci umstelle, werden zwar Umlaute aus der Datenbank richtig ausgegeben, aber immer noch nicht gespeichert und die HTML Umlaute funktionieren ebenfalls nicht mehr.
__________________ Da ich selten bis gar nie sehe, wenn man mir PNs schreibt, bitte über Skype melden, wenn es ein Anliegen gibt!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von brain_surgery: 13.10.2012 13:39.
|
|
13.10.2012 13:23 |
|
|
Oli
Server-Administrator
Dabei seit: 13.06.2010
Beiträge: 1.540
|
|
Hi,
wurde eventuell PHP oder MySQL geupdatet? Dann kann es sein, dass jetzt standardmäßig ein anderer Zeichensatz für die Verbindung benutzt wird. Grundsätzlich ist der Zeichensatz (in den meisten Fällen) egal, allerdings muss dieser beim Lesen gleich sein, wie beim Schreiben. Wenn die Zeichensätze nicht kompatibel sind, werden die Daten - logischerweise - verfälscht übertragen.
Eventuell mal versuchen, vor dem Auslesen/Schreiben von Daten mit SET NAMES (MySQL-Dokumentation hier) den Zeichensatz zu setzen, z.B.:
php: |
1:
2:
|
mysql_query( "SET NAMES 'utf8'" );
mysql_query( "SET NAMES 'latin1'" ); |
|
Ansonsten probier mal, die Formulardaten in eine Datei zu schreiben, dann siehst du, ob das Problem schon früher auftritt (z.B. in der Übertragung des Formulars).
LG
|
|
13.10.2012 13:51 |
|
|
brain_surgery
skype: energon-soup
Dabei seit: 09.02.2005
Beiträge: 973
Herkunft: austria Name: Nathalie
Themenstarter
|
|
Ich hab gleich nach der Verbindung zur Datenbank folgendes eingefügt:
php: |
1:
2:
|
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'"); |
|
Effekt ist derselbe.
Es ist möglich dass mein Hoster PHP und/oder MySQL geupdated hat.
Und die Formulare dürften, wie ich festgestellt habe, plötzlich alle nicht mehr richtig funktionieren. In vorhergegangen Tests haben sie das aber.
Tatsächlich klappts auch ohne Formular nicht mehr:
php: |
1:
|
$query = mysql_query("UPDATE mitglieder SET job = 'Unbeschäftigt' WHERE id = '".$_SESSION["id"]."'"); |
|
Die Zeile schrieb eigentlich das richtige in die Datenbank, jetzt aber nicht mehr. Jetzt wird da nur mehr "Unbesch" gespeichert. Wenn ich manuell "Unbeschäftigt" eintippe, zeigt es mir auf der Seite dann "UnbeschÀftigt" an.
UPDATE: Ich hab gerade gemerkt, dass ich aus Versehen statt
header('Content-Type: text/html; charset=utf-8');
folgendes stehen hatte:
header('Content-Type: text/html; charset=utf-9');
Das habe ich nun ausgebessert, was dazu geführt hat, dass die HTML Umlaute auch nicht mehr angezeigt werden. :U
__________________ Da ich selten bis gar nie sehe, wenn man mir PNs schreibt, bitte über Skype melden, wenn es ein Anliegen gibt!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von brain_surgery: 13.10.2012 14:43.
|
|
13.10.2012 14:29 |
|
|
Oli
Server-Administrator
Dabei seit: 13.06.2010
Beiträge: 1.540
|
|
Zitat: |
Original von brain_surgery
Tatsächlich klappts auch ohne Formular nicht mehr:
php: |
1:
|
$query = mysql_query("UPDATE mitglieder SET job = 'Unbeschäftigt' WHERE id = '".$_SESSION["id"]."'"); |
|
Die Zeile schrieb eigentlich das richtige in die Datenbank, jetzt aber nicht mehr. Jetzt wird da nur mehr "Unbesch" gespeichert. Wenn ich manuell "Unbeschäftigt" eintippe, zeigt es mir auf der Seite dann "UnbeschÀftigt" an. |
Ist die PHP-Datei in UTF8 gespeichert? Sonst schreibst du hier nämlich nicht-UTF8 in eine UTF8-Verbindung.
|
|
13.10.2012 14:43 |
|
|
brain_surgery
skype: energon-soup
Dabei seit: 09.02.2005
Beiträge: 973
Herkunft: austria Name: Nathalie
Themenstarter
|
|
Ah! Nun mit dem richtigen Header und dadurch dass ich die Kodierung der Unterseite von ANSI auf UTF-8 umgestellt habe, klappt es jetzt! Danke für die Hilfe!
Vorher hat es anscheinend nur durch Glück geklappt, aber ich bin froh dass ich jetzt weiß, wie ich so ein Fehlverhalten in Zukunft verhindern kann. c:
__________________ Da ich selten bis gar nie sehe, wenn man mir PNs schreibt, bitte über Skype melden, wenn es ein Anliegen gibt!
|
|
13.10.2012 14:50 |
|
|
|
Impressum
|