Charset-Probleme bei Ajax

DataFox

Erfahrenes Mitglied
Hi Leute

ich verzweifel grad an den Charsets. Meine Seite läuft mit
Code:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">

alle Umlaute usw. sehen vernünftig aus. Auch Umlaute und Sonderzeichen die aus der MySQL-Datenbank in den Content geladen werden. Wenn aber per Ajax irgend etwas aus der DB geholt und in den Content geladen wird, sind die Umlaute total zerfetzt. Aus einem Ü werden dann ägyptische ur-hyroglyphen die nicht mal ein Historiker oder Schatzjäger verstehen würde. Seltsame Musiknoten und andererer Schmarrn tauchen statt dessen auf.

Das ist höchst merkwürdig, denn meiner Meinung nach müsste doch JavaScript mitkriegen in welchem Charset die Website angezeigt werden soll, und ob's nu direkt in einer *.php steht oder nachträglich per Ajax geholt wird das sollte doch egal sein?

Muss ich in JavaScript auch irgendwie Charsets einstellen
Das seltsame: Wenn ich in der Ausgabe für Ajax (ist ein PHP-Skript das Daten aus der MySQL-DB holt) ein utf8_decode() auf den Output anwende, klappts! Dummerweise werden viele dieser Skripte auch includiert um "feste" Bestandteile der Seite auszugeben um Redundanzen zu vermeiden. Und wenn dort ein utf8_decode() aufkreuzt, ist alles zerfetzt.

An meiner DB kann ich nix umstellen, die scheint mit UTF8 festgetackert zu sein :/
Die Seite als UTF-8 laufen zu lassen tut's aber nicht, dann ist generell alles zerfetzt.

Habt Ihr eine Idee was man da tun kann?

Gruß
Laura
 
Willkommen im Boot die Probleme hatte ich auch bis vorhin.

Meine Lösung sah dann wie folgt aus.

escape(urlstring) zum rübersenden
unescape(return value) für den Empfang.

Damit klappte es wunderbar , hoffe das bleibt auch so.
 
ich habe am Anfang der PHP-Datei folgendes:

Code:
ini_set('default_charset', 'UTF-8');

da die DB auf UTF-8 läuft wird hiermit der output von PHP UTF-8 formatiert. Seltsamerweise darf ich aber nicht UTF-8 im Head der HTML-Seite deklarieren, sondern ISO.

Jetzt habe ich das Problem das zwar alles funktionieren *könnte*, ich aber bei "hart gecodeten" Texten auf gar keinen Fall Umlaute oder Sonderzeichen stehen lassen darf. Aus ü muss ich &uuml; machen, usw.

Gruß
Laura
 
Nun ja , ich geh da immer so vor.

Jedes Dokument wird erstmal im UTF-8 Format gespeichert kommt immer gut.

Im Dokument Kopf hab ich dann angeben :

HTML:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

Soweit ich das nun auch nachgelesen habe setzen viele auch den Header über PHP wenn sie die Seite über PHP erstellen.

PHP:
header("Content-Type:text/html; charset=utf-8");

Des weiteren hatte ich bei mir die Hauptprobleme das er umlaute beim senden oder empfangen über Ajax total zerlegt hat also so das es wirklich eher wie Japanisch aussah.
Aus diesem Grunde habe ich dann noch die Zeichen codiert mit JS für das senden und empfangen , über escape und unescape.

Ja das ist so meine Vorgehensweise und die läuft ganz gut , ich hoffe es hilft Dir etwas.
 

Neue Beiträge

Zurück