Falsche Anzeige von Umlauten mit jQuery

qsrs

Erfahrenes Mitglied
Hallo,

ich arbeite mit einem Skript, welches per jQuery Einträge via PHP in einer Datenbank speichert. Nun ist es so, dass Umlaute, Sonderzeichen oder Fremdsprachen nicht richtig angezeigt werden, also statt ü wird ü angezeigt. Meine Seite, die Datenbank usw. ist jedoch auf UTF8 optimiert, es tritt nur mit diesem Skript auf. In der DB steht z.B. beim ü das ü in der Datenbank, was korrekt ist. Wenn ich die Seite nochmals lade, wird das ü korrekt angezeigt, da es dann direkt aus der DB geladen wird. Ich vermute das Skript gibt den Eintrag beim Senden gleichzeitig aus (also zunächst nicht über die DB) und speichert es in der Datenbank, und die direkte Ausgabe funktioniert dann nicht richtig. Das vermute ich aber nur. Der Teil, von dem ich denke, dass hier die Ausgabe stattfindet, ist folgender:

Code:
//Commment Submit

$('.comment_button').live("click",function() 
{


var ID = $(this).attr("id");


var comment= $("#ctextarea"+ID).val();
var dataString = 'comment='+ comment + '&msg_id=' + ID;


if($.trim(comment).length==0)
{
alert("Please enter some text in the comment box");
}
else
{
$.ajax({
type: "POST",
url: "library/wall/comment_ajax.php",
data: dataString,
cache: false,
success: function(html){
$("#commentload"+ID).append(html);
$("#ctextarea"+ID).val('');
$("#ctextarea"+ID).focus();
 }
 });
}
return false;
});

Die Variable heißt "comment". Ich habe auch schon versucht, diese am Beginn des Skriptes mit decodeURI zu dekodieren, aber es ändert nichts. Hat jemand eine Idee, wie ich es korrekt ausgeben kann? Vielen Dank für eure Hilfe.
 
Zuletzt bearbeitet:
Hast du schon mal mit Firebug u.ä. probiert zu schauen was an den Server geschickt wird.
Desweiteren würde ich mit Hilfe von console.log(comment) in der Zeile 12 schauen welchen Wert comment hat.
 
Firebug gibt OK aus

schau doch mal, ob sie UTF8-safe ist, in diesem Fall escape()

Mit escape() funktioniert jetzt die direkte Ausgabe, allerdings nach einem Reload der Seite steht ein Fragezeichen da, es steht also falsch in der DB (ü statt ü). Muss ich es jetzt auf PHP Seite noch bearbeiten? Wenn ja, wie? Oder ist der Ansatz nicht richtig?

Nachtrag: Ich habe jetzt in PHP mit utf8_encode enkodiert, jetzt ist das Ergebnis in der DB wieder korrekt aber die direkte Ausgabe ergibt wieder ü im Browser, nach einem Reload der Seite dann ü. Scheint, dass das Ergebnis doch aus der DB komm, nachdem man sendet. Ich komme nicht weiter.
 
Ist die Seite, wo das Script rauskopiert ist, auch im Header mit charset UTF8 angegeben?
http://oli.jp/2009/html5-charset/

Ist der Sourcecode in UTF8 gespeichtert? (welcher Editor?)
http://stackoverflow.com/questions/217089/looking-for-a-utf-8-text-editor

Ist bei der MySQL-Anfrage (ob Select oder Insert) die UTF8 charset-Info mitgegeben?
Code:
mysql_query('set character set utf8;');
bzw.
set names 'utf8';

Und Hier alle Tipps in einem Thread:
http://www.tutorials.de/php/388124-utf-8-mysql-php-html.html

mfg chmee
 
Danke für euer Engagement.

Ich kann alles mit ja beantworten, wie gesagt, die Seite ist UTF8 optimiert und die Darstellung nicht dynamischer Inhalte in allen Sprachen ist möglich.
Lediglich diese jQuery-Funktion bringt diesen Fehler.

Ich habe es nun so eingestellt, dass in der Tabelle nicht UTF8 enkodiert wird, sprich es wird z.B. das ü gespeichert. Wenn ich nun die Seite lade, werden Fremdsprachen oder Umlaute korrekt angezeigt. Nur, wenn ich eine Fremdsprache eingebe und dann auf senden gehe, wird es falsch angezeigt. Nach einem Reload der Seite wieder richtig. Ich denke es ist irgendwo im jQuery Teil.

Hat jemand noch eine Idee? Ich komme einfach nicht auf die Lösung.
 
Na, ich würd' den MySQL-Teil definitiv in UTF8 lassen und logischerweise auch die Inserts, Dein Ziel ist doch, es am Ende in UTF8 laufen zu haben. Also heisst es

(A) 100% wissen, dass die Inserts mit UTF8-Zeichen geschrieben werden
(B) damit gehen wir nun davon aus, dass Alles in der SQL-Tabelle UTF8-konform ist.
(C) Jetzt heisst es nur noch, rausfinden, wo die Ausgabe Schluckauf hat. Ob über Firebug, Console-Ausgaben, zusätzlich eingetragene Echos/Prints. etc pp. Ausgabe/Umformung im php-Teil, dann Ausgabe/Analyse im JS-Teil vor und hinter irgendwelchen String-Funktionen/Operationen.

Findet sich ein Gedanken/Lösungsansatz in diesem Beitrag?
http://www.perl-community.de/bat/poard/thread/17021

mfg chmee
 
Kurz nur als Update: Ich habe es wieder auf UTF8 umgestellt, es sollte nur zum Testen sein. In der DB steht es definitiv UTF8 kodiert (also als Beispiel ü). Die Ausgabe ist ja ohne jQuery in Ordnung, sprich wenn der Kommentar schon geschrieben ist und eine einfache MySQL-Abfrage mittels PHP den Text aus der DB holt. Nur, wenn man den Kommentar über Senden abschickt und er dann direkt ausgegeben wird, sieht man bei Umlauten oder Fremdsprachen die Zeichen nicht korrekt.
 

Neue Beiträge

Zurück