Willkommen in der Webstatt Zum Webstatt Blog und Stories
web4 am 04.07.07 13: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').innerHTML = response.responseText;
anim.toggle();


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

Grüsse

netcup.de Warum gibt es hier Werbung?
Kevz am 04.07.07 15:20

Ich würde dir JSON empfehlen. Damit sollte es eig. klappen, einfach mal versuchen. :) - 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.

Wasili am 04.07.07 17: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.

web4 am 04.07.07 22:15

@kevz

Quote
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?:)

Wasili am 04.07.07 22: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.

web4 am 04.07.07 23:07

höh:D 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 :)

Also die htmlentities haben auf jeden fall etwas geholfen...!:)
Vielen dank!

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt