mmofacts.com

AJAX & Umlaute

gepostet vor 17 Jahre, 4 Monate von Kapsonfire
Da ja Ajax probleme mit Umlaute hat, wollte ich fragen ob es eine JSCRIPT funktion schon gibt, die die Umlaute automatisch in ihrem HTMLCODE umwandelt.
Bin nit allzugut in JSCRIPT
gepostet vor 17 Jahre, 4 Monate von Todi42
Ajax ist : Asychrones HTTP (also HTTP), JavaScript und XML. Welches dieser drei hat Probleme mit Umlauten? HTML kommt da übrigens garnicht vor ;-)
gepostet vor 17 Jahre, 4 Monate von Kapsonfire
fakt ist das ajax folgende werte übermittelt
bei umlauten
äüö
und so weiter
da ich mit diesen werten nicht arbeiten will
möchte ich bevor ajax den inhalt losschick das jscript die ä,ü,ö und so weiter vorher in den htmlcdoe ä etc umwandelt
meine frage also
existiert bereits eine folgende funktion oder muss ich mir diese selber schreiben
gepostet vor 17 Jahre, 4 Monate von Agmemon
Ich weiß, welches Problem Du hast. Eine Lösung habe ich auch noch nicht gefunden, aber eine Vermutung, woran es liegen könnte. Ich tippe darauf, dass der Webserver mit einer anderen Codierung arbeitet, als die Codierung, die in der Seite angegeben ist. Der Browser wird beim Ajax-Request nicht noch mal prüfen und so erhält der Benutzer eine Seite mit unterschiedlichen Codierungen.
gepostet vor 17 Jahre, 4 Monate von Kapsonfire
alle seiten arbeiten mit UTF-8
genauso wie ajax
hab es probiert...
irgendwie klappt es nicht
gepostet vor 17 Jahre, 4 Monate von Kapsonfire
problem gelöst
manchmal ist das einfachste doch die beste lösung
hier mein quellcode

function sendchat()
{
if (http2 != null) {
http2.open("POST", "sendtochat.php", false);
http2.setRequestHeader(
"Content-Type",
"application/x-www-form-urlencoded");
http2.send("text="+escape(document.Formular.User.value));
document.Formular.User.value="";
document.Formular.User.focus();
}
}
gepostet vor 17 Jahre, 4 Monate von Fornax
Dein Problem ist, die Daten zum Server zu schicken, ich vom Server zu laden?
Das Problem hatte ich auch. Meine Seite habe ich komplett in ISO-8859-1, aber wenn etwas per AJAX an den Server geschickt wird, kommt es als UTF-8 an. Wegen einem anderem Problem habe ich folgende Funktion, die dann alle Daten von AJAX "bearbeitet":
static function transformCharset($var, $in_charset, $out_charset){

if(is_array($var)){
$new = array();
foreach($var as $k => $v){
$new[self::transformCharset($k,$in_charset,$out_charset)] = self::transformCharset($v,$in_charset,$out_charset);
}
$var = $new;
}
elseif(is_object($var)){
$vars = get_class_vars(get_class($var));
foreach($vars as $m => $v){
$var->$m = self::transformCharset($v,$in_charset,$out_charset);
}
}
elseif(is_string($var)){
$var = iconv($in_charset, $out_charset, $var);
}
return $var;
}
Aufruf:
		if(($_SERVER['HTTP_X_AJAX_ENGINE'] == 'DENA-DESIGN') && $_SERVER['HTTP_X_CHARSET']){

$text = self::transformCharset($text, $_SERVER['HTTP_X_CHARSET'], CHARSET);
}
CHARSET ist eine definierte Konstante: ISO-8859-1
$_SERVER['HTTP_X_CHARSET'] ist UTF-8, wird beim AJAX-Request zum HTTP-Header hinzugefügt.
Deine Lösung mit escape() im JS sollte ich mir mal angucken, aber ich denke das würde zuviel Umstellungen bei mir bedeuten
gepostet vor 17 Jahre, 4 Monate von COrthbandt
Nur mal so falls das nicht bekannt ist: XmlHTTPRequest (aka AJAX) arbeitet standardmässig alles in UTF-8 ab.
Wenn man es anders haben will, muss man es beim Request UND beim Response angeben. Das XmlHTTPRequest-JS-Objekt hat auch ein Charset-Member, das man dafür setzen muss. Beim Response denke ich ist es elementartrivial das Charset richtig zu setzen.
gepostet vor 17 Jahre, 4 Monate von Nightflyer
Einfacher - und sauberer - ist alle HTML-Umlaute direkt im File mit der HTML-Codierung zu verschlüsseln
ä = auml;
ö = ouml;
< = <
usw.
gepostet vor 17 Jahre, 4 Monate von Nuky
escape() ist die einfache Lösung. Den Charset zu setzen - auf alle möglichen Varianten, die ich gefunden habe, hat bei mir nicht funktioniert - beim Senden.
gepostet vor 17 Jahre, 4 Monate von Kapsonfire
Original von Nightflyer
Einfacher - und sauberer - ist alle HTML-Umlaute direkt im File mit der HTML-Codierung zu verschlüsseln
ä = auml;
ö = ouml;
< = <
usw.

geht ja nicht wenn ajax nicht das ä überträgt sondern andere zeichen^^
gepostet vor 17 Jahre, 4 Monate von knalli
Das Zeichen ä überträgt er auch nicht..
Was die eigentliche Frage angeht (gibt es eine solche Funktion schon): Ich meine ja, in irgendeiner Library sogar.. aber ich nicht weiß nicht mehr wo. Oder in so nem Forum a la php.net...
Andere Sache ist: Was spricht denn gegen UTF-8? Oder läuft der Rest der Anwendung noch mit ISO und lässt sich nicht einfach ändern?
gepostet vor 17 Jahre, 4 Monate von Klaus
Original von Browser-Games World
Original von Nightflyer
Einfacher - und sauberer - ist alle HTML-Umlaute direkt im File mit der HTML-Codierung zu verschlüsseln
ä = auml;
ö = ouml;
< = <
usw.

geht ja nicht wenn ajax nicht das ä überträgt sondern andere zeichen^^
Dann solltest du alle Knackpunkte durchgehen, denn irgendwo wird es vermurkst.
evtl. Datenbank(-Verbindung) oder andere Datenquellen, HTTP-Verbindung bis schließlich das HTML-Dokument.
Ich arbeite mit Ajax und ISO ohne Probleme, so lange die Header richtig gesetzt werden.
gepostet vor 17 Jahre, 4 Monate von Sh1nto
ich habs so gelöst, aber erst im PHP,...
mysql_real_escape_string(htmlspecialchars(utf8_decode($message)))

funktioniert bis jetzt ohne Probleme,...
gepostet vor 17 Jahre, 4 Monate von lauscher
achso, deine ajax funktion auf der browsergamesworld seite öffnet alle seiten, die man der loadmain funktion hinschmeißt...
gepostet vor 17 Jahre, 3 Monate von Kapsonfire
naund?
wenn man meint des manipulieren zu müssen^^
gepostet vor 17 Jahre, 3 Monate von thomas65
meine güte... als entwickler sollte man das schon wissen.
AJAX = Asynchronous JavaScript and XML
"ä = auml;
ö = ouml;
< = <"
da gibts im html ne tolle atribut die nennt sich "http-equiv=content-type".
nach dem setzen dieser zeile:
interpretieren die browser es als utf 8 du kannst dann die ÖÄÜ sonderzeichen etc. direkt rein schreiben....
gepostet vor 17 Jahre, 3 Monate von Klaus
Oder besser aus PHP heraus den Header anpassen.
header('Content-type: appliction/xml; charset=UTF-8;');

Du hättest nicht "content="text/html;" schreiben dürfen, das sorgt in der Lobby schon für Verwirrung.
gepostet vor 17 Jahre, 3 Monate von knalli
Original von thomas65
meine güte... als entwickler sollte man das schon wissen.
AJAX = Asynchronous JavaScript and XML
"ä = auml;
ö = ouml;
< = <"
da gibts im html ne tolle atribut die nennt sich "http-equiv=content-type".
nach dem setzen dieser zeile:
interpretieren die browser es als utf 8 du kannst dann die ÖÄÜ sonderzeichen etc. direkt rein schreiben....

Ausgenommen von <, >, &. Die bleiben auch bei XML very special.

Auf diese Diskussion antworten