RequestHeader und Kollations-Problem

Atalión

Mitglied
Hallo ihr, ich bin's mal wieder :)

Ich programmier ja derzeit an meiner Videogalerie und habe die Kommentarfunktion jetzt in Ajax realisiert. Soweit funktioniert auch alles, aber:

ich sende die Daten aus dem Kommentarformular über Ajax (mittels POST) an eine PHP-Datei, die zum einen die übermittelten Daten in eine Datenbank eintrögt, zum anderen den geschriebenen Kommentar direkt ausgibt und dann per innerHTML auf der Seite mit dem Video den Kommentar anzeigt.

Mein Problem: die direkte Ausgabe übermittelt Sonderzeichen wie ó, á usw. problemlos, wenn ich die Seite aber aktualisiere und dann der Kommentar aus der Datenbank ausgelesen wird, zeigt er mir die Sonderzeichen als ó etc. an.

Ich schätze mal, dass es daran liegt, wie ich den requestHeader sende, aber ich finde den Fehler einfach nicht. Es ist egal, ob ich 'nen charset mitsende oder nicht, das Problem bleibt das Gleiche. Ich denke, dass hier der Fehler liegt, deswegen hab ich es in diesem Unterforum gepostet.

Ich hab die ganze Seite in latin1_german_ci bzw. latin1_swedish_ci.

Kann mir jemand weiterhelfen? :confused:

Schönen Start ins Wochenende,
Malte :)
 
Hey

Ja ist n bisschen kompliziert xD also... die Datenbank ist in swedish, die tabelle mit den Usern ist auch in swedish (sind aus 'ner Community, für die die Videogalerie ist), die Galerie hab ich aber warum auch immer in german gemacht :D

Der/die/das charset für die Seite ist einfach nur auf iso-8859-1 gestellt.

Lg,
Malte :)
 
Und das mit den vermurksten Sonderzeichen tritt nur bei den Kommentaren auf?

Weil eigentlich dürfte das nicht sein....die Kollation betrifft ja den Umgang von MySQL beim Sortieren/Vergleichen der Daten, Zeichensatz ist ja in beiden Fällen Latin1...von da aus gesehen dürfte eigentlich nichts schiefgehen.

Welcher Zeichensatz wird denn für die Datenbankverbindung genutzt?(Kannst du bei PHPMyAdmin auf der "Startseite" einsehen)
Und vor allem...was sendest du da für RequestHeader?:-)
 
Hey

Das Komische ist.. ich hab mal probiert, anstatt den Nicknamen direkt aus dem $_POST in die Datenbank zu schreiben, erstmal ne MySQL Abfrage gemacht und dann den Nicknamen erst aus der Datenbank lesen lassen, wo die mit POST übergebene User-ID gleich der User-ID aus der Datenbank ist und dann den Nicknamen bei den Kommentaren in die DB eingetragen wird. Eigentlich sollten die Sonderzeichen wie ó, á etc. dann ja richtig eingetragen werden, denn wenn man die aus der Datenbank gelesene Inhalte direkt ausgibt, wird auch wieder alles richtig angezeigt.. naja.. Fehlanzeige :D die Sonderzeichen werden wieder zerhauen..

Auf der Startseite ist die Kollation utf_unicode_ci, aber auch wenn ich die auf latin1_german_ci anpasse, läuft nichts! :/

Als Header übergeb ich:

Code:
blablabla

http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-1");
http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");

blablabla

Lg,
Malte :)
 
Auf der Startseite ist die Kollation utf_unicode_ci, aber auch wenn ich die auf latin1_german_ci anpasse, läuft nichts! :/

Könntest du dich mal entscheiden...angefangen hat es mit german und swedish, jetzt auf einmal kommt etwas von Unicode dazu...was denn nun, und vor allem, welche Kollation auf der Startseite, Zeichensatz und Kollation sind nicht dasselbe.

Prinzipiell würde ich dir empfehlen, überall den selben Zeichensatz zu verwenden(PHP-Skript, Datenbank, Datenbannkverbindung),
ansonsten verbringst du die nächsten Wochen mit dem Konvertieren von Strings.
Das sollte erstmal ganz oben auf deiner ToDo-Liste stehen.
 
Hey

Ich hab mich doch entschieden oO Ich sollte auf der Startseite im phpmyadmin gucken, welche Kollation angegeben ist, und das ist eben utf_unicode_ci. Die Tabellen der ganzen Community und eben auch der Videogalerie sind in latin1_german_ci bzw. latin1_swedish_ci (Tabelle mit den Benutzernamen). Ich kann schlecht die Kollation der Datenbank der ganzen Community anpassen (wieso auch, da klappt ja alles).

Es klappen ja auch sonst in der Videogalerie ALLE Datenbankeinträge, ohne dass es die Sonderzeichen zerhaut, nur, wenn ich das PHP-Skript per Ajax laufen lass, geht es nicht..

LG und schönen Sonntag Abend noch,
Malte :)
 
Ahso, das meinst du mit Startseite :-)

Meine Vermutung wäre folgende:
Der bei PHPMyAdmin angezeigte Verbindungszeichensatz passt ja nicht grad zu dem in den Tabellen verwendeten.
Du kannst den Verbindungszeichensatz aber ändern:
Bevor du in deinem Problemskript irgendetwas aus der DB liest oder hineinschreibst, setze folgendes Query ab:
SQL:
"SET NAMES 'latin1'"
Die Skripte die du sonst für die Community nutzt, werden dies vermutlich auch tun, weshalb sie funktionieren.


Das Ändern in PHPMyAdmin hat keinen Effekt, weil es ja nur die Arbeit der PHPMyAdmin-Skripte betrifft, ein generelles Umstellen des Verbindungszeichensatzes würde Zugriff auf die my.ini erfordern.
 
Hey :)

mit
PHP:
mysql_query("SET NAMES 'utf8'");
hat's schließlich geklappt :) warum auch immer utf8 oO :D

Danke für die schnelle Hilfe,
bis zum nächsten Problem :D

Lg,
Malte :)
 

Neue Beiträge

Zurück