Zeichensatzproblem - Text abspeichern

topf

Mitglied
Hallo,

ich habe jetzt mal wieder einige Zeit recherchiert und über Zeichensätze gelesen.
Mein Problem gründet vermutlich auf PHP, aber ich glaube, dass sich das Problem auch durch meine mysql-Datenbank einstellt.

Vor weg habe ich in PHP, wie mysql alles auf utf8 umgestellt.
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

Bis auf charachter_set_server ist also alles auf utf8.

Mein Problem gestaltet sich folgendermaßen:

Ich speichere Mailtexte in einer Tabelle per PHP.
Jedoch werden diese Texte vor auftauchenden Umlauten einfach abgeschnitten.
Das Query wird korrekt ausgegeben, aber gespeichert wird beispielsweise von:

'Ich möchte diesen Teppich nicht kaufen!' nur 'Ich m'

Ich konvertiere zuvor per Funktion utf8_encode() oder imap_utf8() alles auf utf8, und vor dem speichern escape ich per mysql_real_escape_string().

Nur es wird so abgehackt gespeichert.

Wieso könnte das so sein?

Ich habe bei meinem Vorgehen eigentlich eher mit "typischen" Problemen á la "Aus Ä wird ?" oder so gerechnet, aber sowas hab ich noch nicht erlebt.

Gruß Lars
 
Zuletzt bearbeitet:
Hast du alles in diesem Schema?

PHP:
$sql = 'ALTER TABLE users CHARACTER SET utf8 COLLATE utf8_general_ci';
mysql_query($sql);
 
Du musst die eingaben mit utf8_encode() codieren wenn alles im standard html-format (iso-8859-1) reingeschrieben werden soll ;)

Sorry, lese jetzt erst das du oben schon erwähnt hast das du es mit utf8_encode probiert hast.
Änder einfach den charset der php datei im htmlteil

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
Zuletzt bearbeitet:
Irgendwie habe ich das Gefühl,

das die Variable character_set_server mit dem Wert 'latin1' maßgeblich daran Schuld ist, dass korrekt in UTF-8 konvertierte strings falsch gespeichert werden.

Args. Immer ärger mit diesem Mist, wenn man nicht alles selbst einstellen darf.

Gruß
 
Ja mit den Umläuten kann man sich ständig rumärgern. Ein weiteres Komisch fenomain gibst bei phpmyadmin wenn man dort die Import funktion nutz und eine Sql datei importiert und dabei achtet das utf8 steht dann gehen die Umläute verloren bwz wird aus denen ein ? Zeichen.

So aber jetzt kommt nihmt man die selbe Sql datei her öffnet die mit einen Editor markiert alles und kopiert es. Danach geht man in phpmyadmin auf Sql eingabe feld und fügt den Kopieren wert ein. Und schickt dann die Sql anweisung ab. Dann funktionierst komischer weiße und Umläute werden auch als solches in die Db eingetragen.

Schon eine komische sach das mit den Zeichen codes. Bei Importieren dürfte es fast nie funktionieren sowie auch bei export. Aber bei dierekter Sql anweisung gehts immer.

Mfg Splasch
 
Wenn die Datei mit utf8 codiert ist, sollte es nicht unbedingt Probleme geben.
Aber das Eintragen von Texten, die ich zuvor mit utf8_encode() prepariert habe und die im Browser auch korrekt angezeigt werden, aber nach dem Speichern im Eimer sind, nervt richtig ab.

Später mal weitermachen, erstmal ablenken.

Schönen Samstag wünsch ich.
 
ne einfacherere lösung :)
In komplette DB ist utf8 und in den form-tags accept-charset="UTF-8" als attribut hinten dranhängen. Dann akzeptiert das Script automatisch auch ü, ö usw. aber in der datenbank werden sie natürlich anders dargestellt, aber wenn man sie mit iso-8859-1 wieder ausgibt dann wird alles normal ausgegeben ;)
 
Hi, dachte ich mir ;) Aber ich brauch utf8, da führt kein Weg dran vorbei.
Ich versteh nur einfach nicht, wo die DB die faxen macht, die Variablen die mit dem Character Set zu tun haben, haben immernoch die gleiche Einstellung , wie in meinem ersten Posting.

Kann das diese einzige Servervariable sein?
 
Zurück