Webstatt.org - Community seit 2006 - 2012 (2024?)

Codierung Umlaute

user-344
04.07.2007 11:35

hallo zusammen

ich bin gerade dabei die ersten Schritte unter Ajax zu unternehmen. Dabei habe ich eine Livesuche gebastelt, die soweit auch funktioniert.

Nur habe ich mit der Codierung von JS Probleme. Er ersetzt alle Umlaute durch Fragezeichen. Ich habe bereits nach Befehlen gesucht mit denen man dies unterbinden könnte, jedoch habe ich noch nichts gefunden.

Wenn man das ganze nur mit PHP wiedergibt, treten keine Umlautfehler auf.

Z.B. macht das JS aus wählen "w?en".

So sieht der Code aus, der die Resultate wiedergibt:

$('search-results'zwinkern.innerHTML = response.responseText;
anim.toggle();


Hat jemand eine Idee, wie man dieses Problem lösen kann?

Grüsse

user-220
04.07.2007 13:20

Ich würde dir JSON empfehlen. Damit sollte es eig. klappen, einfach mal versuchen. lächeln - Ansonsten eine andere Frage, was für eine Codierung hast du bei den Meta Tags festgelegt? Das könnte auch auf die Fragezeichen je nach Art der Codierung zurückführen.

user-343
04.07.2007 15:06

Am einfachsten und wartungsloser, wenn mal alles so ist, geht es, wenn du ausnahmslos *alles* auf UTF8 umstellst. Skripte mit UTF8 speichern (Ohne BOM, aufpassen), Datenbank so speichern, die Daten der Datenbank so ausliefern lassen, per Header auch den Browser dazu auffordern, es als UTF-8 zu lesen (Sowas macht man eigentlich nicht über Meta-Tags. Der Browser sollte *vorher* wissen, was für ne Kodierung kommt, nicht erst während er die Datei empfängt). Bedenke, auch die JS-Dateien als UTF-8 zu speichern und im Quelltext angeben, wenn du sie mit script einbindest (<script charset="UTF-8" [...]>, wenn ich mich nicht irre).

Ansonsten, etwas einfacher: Mit HTMLEntities den Text, den du mit PHP an das JS weitergibst, bearbeiten, so dass ä's und so zu & auml; etc werden. So hast du auch keine Probleme und müsstest nicht alles umstellen.

user-344
04.07.2007 20:15

@kevz
Ansonsten eine andere Frage, was für eine Codierung hast du bei den Meta Tags festgelegt?

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Sollte eigentlich funktionieren... es funktioniert auch, sofern kein JS im Spiel ist.

Leider wird JSON von meiner PHP Version nicht unterstützt. (ab 5.2)

@Wasili
gute Idee! Jedoch ist die Datenbank schon älter und auf latin1 und nicht unicode eingestellt... werde mir das aber für das nächste mal merken! danke.

mit htmlentities klappt es! Also ich kann von die Datenbank auslesen und dann zeigt es mir dank htmlentities ö's und ü's usw an.

Jedoch habe ich ein select feld, dieses wird durch JS an ein PHP Skript gesendet (ajax). Ich habe schon alles probiert. Welchen Wert (value) muss ich dem <select option> geben, damit es in der PHP Datei normal ankommt?
Jemand noch eine Idee?

Im Notfall könnte ich versuchen die Zeichen zu suchen / ersetzen und das Wort so wieder richtig zusammen zu stückeln.

Gibt es nichts schöneres?lächeln

user-343
04.07.2007 20:35

Mehrfachauswahl oder Einfachauswahl?

select braucht name="name", die option-Tags brauchen einen value-Tag, sonst wird der Wert zwischen den Option-Tags verwendet (<option>Wert</option) - was JS da brauchtP, ka.
Bei mehrfachwahl ist es von nöten, dass man am ende des Namens noch ein [] anhängt (Ka warum das nur PHP so will...)

Was genau geht denn nicht? Sonst lass mal alles übergebene mit PHP ausgeben (var_dump($_ENV)), oder direkt $_POST.

user-344
04.07.2007 21:07

höhFettes Grinsen das glaub ich nicht.

Vorhin stand im value="Kom&ouml;die" (oder Komödie) und als es im PHP-Skript ankam war ö zu einem ö mutiert.
Jetzt klappts und ich weiss nicht ganz sicher warum lächeln

Also die htmlentities haben auf jeden fall etwas geholfen...!lächeln
Vielen dank!