2Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
348
348
EMPFEHLEN
-
Hallo Tutorials.de-Community,
ich habe nach meinem Serverumzug ein Problem mit der Zeichenkodierung bei meinem Projekt, aber auch generell Verständnislücken zu diesem Thema.
Es geht darum, dass Leute Kommentare zu Bildern geben können. Diese Kommentare werden über ein AJAX-Script an eine PHP-Datei gesendet und dort in die Datenbank geschrieben.
Ihr könnt euch dazu gerne hier das aktuelle Projekt ansehen. Einfach ein Vorschaubild anklicken und in der unteren Leiste auf "Kommentar hinzufügen" klicken.
Das Problem:
Wenn jemand einen Kommentar mit Umlauten abschickt, dann werden diese in der Datenbank nicht normal, sondern in dieser Form gespeichert:
Zitat von Originaleintrag
Die Anzeige des Kommentars (auch mit AJAX realisiert) wird dann seltsamerweise richtig dargestellt Ich habe auch durchgängig die Kodierung "charset=ISO-8859-1" gewählt und die Datenbanken sind nach "latin-german1" umgestellt(was ist eigentlich der Unterschied zu german2?).
Zitat von Datenbank
Mein Hauptproblem ist also, dass Umlaute und auch andere Sonderzeichen wie das scharfe S (ß) in der Datenbank falsch gespeichert werden und ich damit auch schädlichen HTML-Code nicht verhindern kann(da etwa htmlentities nicht richtig funtioniert)!
Welchen Unterschied macht die Charset-Definition eigentlich bei....- ...der META-Tag-Definition
- ...dem Javascript-Befehl "setRequestHeader"
- ...dem PHP-Befehl: "header()"
- ...der Definition in Dateien (z.B. xyz.php) des Charsets beim Speichern
Man findet so schwer irgendwelche zusammenfassenden Informationen, was man als Webdesigner zu beachten hat und welche Charset-Definition jetzt eigentlich gilt. Ich hab längere Zeit gesucht und bitte euch jetzt um Hilfe, da ihr einfach das kompakte Know-How habt.
Vielen Dank also schonmal für eure Zeit und eure Mühen!
AdamDa' Hacker - WINXP - C4D R8.5 - VB6.0! C4D/VB-Status: Erfahrener.
.:.:.:.-<>-_-#Hab' ein Dynamics Tutorial am laufen! - HIER: Grundlagen der Dynamics #-_-<>-.:.:.:.
Mein eigener Internet-Fernsehsender: www.LwTV.de
Now Online: www.AdamKalisz.de
-
Moin Adam,
Gucke mal in die PHP-FAQ
-
Hi Sven,
vielen Dank!
Oh Gott, bin ich der Grund für den FAQ-Eintrag? *schäm*
Aber vielen Dank. Werde deine Checkliste demnächst durcharbeiten, um meinem Fehler auf die Spur zu kommen.
Ziemlich verwirrend das ganze. Ich hab natürlich das Problem, dass ich mich nicht auf UTF sondern ISO festgelegt habe und ich befürchte, dass ich nochmal sämtliche Umlaute irgendwie ändern muss(was unmöglich ist). Aber wie gesagt, hab das FAQ vorerst nur überflogen.
Natürlich bin ich auch Lösungsansätze, die direkt mein Problem betreffen, nicht abgeneigt. Doch vorerst kann ich diesen Beitrag mal als "erledigt" markieren.
Danke! Beste Grüße
AdamDa' Hacker - WINXP - C4D R8.5 - VB6.0! C4D/VB-Status: Erfahrener.
.:.:.:.-<>-_-#Hab' ein Dynamics Tutorial am laufen! - HIER: Grundlagen der Dynamics #-_-<>-.:.:.:.
Mein eigener Internet-Fernsehsender: www.LwTV.de
Now Online: www.AdamKalisz.de
-
-
Hi Sven,
ha, nochmal knapp entkommen
Nunja. Schon allein an zwei Dingen erkenne ich mein Problem:
1. PHPmyAdmin:
Wenn ich mir den Datensatz in PHPmyAdmin ansehe, kann ich bereits die Fehlformatierung sehen. Ich habe hier einen Screenshot angehängt, wie Bilderkommentare in die Datenbank eingetragen werden: Charset_Error.jpg
2. Resultat des MySQL-Datensatzes
Wenn ich mir im PHP-Skript das Resultat der Datenbank hernehme und dieses versuche mit dem Befehl "htmlentities()" zu kodieren, dann liefert mir PHP den entsprechend "escapten" (z.B. Ã
HTML-Code
Das sind für mich die beiden Anzeichen, durch die ich gemerkt hab, dass irgendetwas nicht stimmt, aber vor allem verhindert dies die Problemlösung -.-
Danke, dass du dir da nochmal Zeit nimmst
Es würde mich freuen, wenn ich kein Problem hätte... ...aber das wäre wohl zu schön
AdamDa' Hacker - WINXP - C4D R8.5 - VB6.0! C4D/VB-Status: Erfahrener.
.:.:.:.-<>-_-#Hab' ein Dynamics Tutorial am laufen! - HIER: Grundlagen der Dynamics #-_-<>-.:.:.:.
Mein eigener Internet-Fernsehsender: www.LwTV.de
Now Online: www.AdamKalisz.de
-
Ich würde mal denken, dass da Latin1 nicht als Verbindungs-Datensatz genutzt wird, sondern UTF-8
Die Lösung wäre wie in den FAQ beschrieben :
Code :1
SET NAMES latin1
Möglichwerweise könnte dies aber ein Chaos mit neuen Datensätzen bringen, dann probiere folgendes:
Code :1
SET character_set_results = latin1;
...das sorgt dafür, dass der DB-Server in Latin1 antwortet. Der Rest erfolgt wie bisher, es hat also keine Auswirkungen auf die Datenbank ansich.
-
Danke Sven für deine schnelle Hilfe
Genau an den Lösungsansatz mit "SET" habe ich als erstes gedacht, als ich mir dein FAQ angesehen habe. Wenn du das jetzt noch als Lösung für mein Problem siehst, werde ich das wohl als erstes ausprobieren.
Die Kollation der Tabelle ist von anfang an auf "latin1-german1-ci" gesetzt. Mich würde daher interessieren, was du mit "Verbindungs-Datensatz" meinst?
Dein FAQ hilft mir sehr gut die Eigenheiten des Charsets zu verstehen... ...trotzdem ist bei mir immer noch die Unklarheit, warum das PHP-Skript bzw. AJAX Umlaute dennoch in dieser komischen Form in die Datenbank einträgt.
Nunja, wie gesagt, ich muss die FAQ selber nochmal durchprobieren. Außerdem möchte ich dich nicht weiter mit meinem Problem nerven.
Herzlichen Dank und beste Grüße:
AdamDa' Hacker - WINXP - C4D R8.5 - VB6.0! C4D/VB-Status: Erfahrener.
.:.:.:.-<>-_-#Hab' ein Dynamics Tutorial am laufen! - HIER: Grundlagen der Dynamics #-_-<>-.:.:.:.
Mein eigener Internet-Fernsehsender: www.LwTV.de
Now Online: www.AdamKalisz.de
-
Ooops, ich meinte natürlich Verbindungs-Zeichensatz

Also wenn der nicht auf Latin1 steht, dann antwortet der Server mit einem anderen Zeichensatz.
Da geht dann bspw. das in den FAQ erwähnte Problem mit den String-Funktionen los, denn auch htmlentities() geht standardmässig davon aus, dass es einen Latin1-String verarbeitet.
Du kannst da also entweder den DB-Server veranlassen, in Latin1 zu antworten, oder aber teilst htmlentities() über den 3.Parameter den Zeichensatz mit, in dem der Server antwortet.
Ähnliche Themen
-
[AJAX] Fehler mit return var
Von totalNooob im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 16.01.10, 05:12 -
Ajax in Modul, Fehler Joomla
Von =fire= im Forum Javascript & AjaxAntworten: 17Letzter Beitrag: 23.07.09, 16:26 -
ajax fehler popup
Von Zack im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 15.05.09, 18:24 -
Ajax Sonderzeichen Fehler
Von RaVenC im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 20.06.08, 12:42 -
Ajax - Fehler in Firefox und IE
Von flooo im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 11.06.06, 11:01





Zitieren

Login





