Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- Nach Umlaut abgeschnitten, Ausgabe falsch (https://www.gegen-bilderklau.net/thread.php?threadid=185195)


Geschrieben von brain_surgery am 13.10.2012 um 13:23:

  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.



Geschrieben von Oli am 13.10.2012 um 13:51:

 

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



Geschrieben von brain_surgery am 13.10.2012 um 14:29:

 

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



Geschrieben von Oli am 13.10.2012 um 14:43:

 

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.



Geschrieben von brain_surgery am 13.10.2012 um 14:50:

 

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:


Forensoftware: Burning Board, entwickelt von WoltLab GmbH