Texte mit Sonderzeichen.
Hendrik
- javascript
Hey!
Hiiilfe, ich bin schier am Verzweifeln! Ich verwende auf meiner Webseite teils AJAX. So zum Beispiel auch bei meinem Message-Dienst (User schicken anderen Usern Textnachrichten). Wenn nun ein User in seinen Posteingang guckt, dann sieht er eine Liste (Tabelle) mit einzelnen Nachrichten. Wenn er nun auf den Betreff der Nachricht klickt, wird die Tabellenzeile größer und die Nachricht erscheint. Allerdings erscheint jedes ä als ä, HTML Code wird ausgeführt usw.
Wenn es nun eine reine PHP-Seite wäre, könnte ich alle Zeichen beim Speichern in die Datenbank bzw. bei Auslesen aus dieser maskieren bzw. "gegensteuern". Leider geht das nicht, weil sowohl beim Speichern als auch beim Lesen der Nachricht die Texte an Javascript-Funktionen übergeben werden. Dadurch kann man auch keine einfachen bzw. doppelten Anführungszeichen verwenden.
Meine Frage an euch: Wie bekomme ich es hin, dass man ALLE Zeichen schreiben kann bzw. darf und dass kein Code ausgeführt werden kann?
Hendrik
"Encodings. Why did it have to be Encodings?" --Cheatah
Dein AJAX-Snippet und Deine Seite haben unterschiedliche Zeichenkodierungen: ersteres offenbar UTF-8 und letztere ISO-8859-1. Du kannst diese Fehler beheben, indem Du die Zeichen vor dem Einbau per JavaScript in HTML-Entities kodierst.
Gruß, LX
Hey!
Dein AJAX-Snippet und Deine Seite haben unterschiedliche Zeichenkodierungen: ersteres offenbar UTF-8 und letztere ISO-8859-1. Du kannst diese Fehler beheben, indem Du die Zeichen vor dem Einbau per JavaScript in HTML-Entities kodierst.
Da hast du Recht. Meine Seiten sind ISO-8859-1 kodiert. Allerdings ist meine Datenbank UTF-8 kodiert. Das verträgt sich also nicht?! Kann ich dann nicht einfach den Zeichensatz meiner Seiten auf UTF-8 ändern oder geht das nicht? Wenn das nicht geht: Wie kann ich die Zeichen in Javascript in HTML-Entities kodieren? Wie heißt diese Funktion? In PHP wäre das ja dementsprechend htmlentities().
Hendrik
@@Hendrik:
Kann ich dann nicht einfach den Zeichensatz meiner Seiten auf UTF-8 ändern
Du kannst nicht nur, du solltest auch.
oder geht das nicht?
Wenn das nicht geht: Wie kann ich die Zeichen in Javascript in HTML-Entities kodieren? Wie heißt diese Funktion?
http://de.selfhtml.org/javascript/objekte/string.htm#replace@title=replace()
Live long and prosper,
Gunnar
Hey!
Kann ich dann nicht einfach den Zeichensatz meiner Seiten auf UTF-8 ändern
Du kannst nicht nur, du solltest auch.
oder geht das nicht?
Wenn das nicht geht: Wie kann ich die Zeichen in Javascript in HTML-Entities kodieren? Wie heißt diese Funktion?
http://de.selfhtml.org/javascript/objekte/string.htm#replace@title=replace()
Wow, vielen Dank für diese kurze und präzise Antwort!
Hendrik
Hey!
Wow, vielen Dank für diese kurze und präzise Antwort!
Hm. Mein Editor Phase 5 unterstützt leider kein UTF-8 und das Plugin funktioniert nicht! Kann ich denn trotzdem UTF-8 nutzen (also in der Meta-Angabe) und alle Sonderzeichen wie ös und äs mit Ö kodieren?
Hendrik
Kitaitirivi!
Wow, vielen Dank für diese kurze und präzise Antwort!
Hm. Mein Editor Phase 5 unterstützt leider kein UTF-8 und das Plugin funktioniert nicht! Kann ich denn trotzdem UTF-8 nutzen (also in der Meta-Angabe) und alle Sonderzeichen wie ös und äs mit Ö kodieren?
Das ginge, wäre aber reichlich suboptimal. Einer der ganz großen Vorteile von UTF-8 ist ja gerade, daß man sich nicht mehr* mit derartigen Kodierungen rumschlagen muß.
Ich rate dazu, den Editor zu wechseln. Spätestens wenn Du mal UTF-8-codierten Quelltext von jemand anderen bekommst, wird Dir diese Unzulänglichkeit von Phase 5 gewaltig auf den Geist gehen.
Ich habe Phase 5 genau deswegen aufgegeben und zu Notepad++ gewechselt. Es gibt aber noch viele andere empfehlenswerte, und die allermeisten unterstützen u.a. UTF-8. Du findest zahlreiche Diskussionen über Editoren im Archiv.
* naja, kaum noch. Die Zeichen mit Sonderbedeutung wie z.B. < und & natürlich immer, in jeder denkbaren Codierung.
Viele Grüße vom Længlich
@@Hendrik:
Wow, vielen Dank für diese kurze und präzise Antwort!
Naja, reicht ja, dass ich mir einmal die Mühe gemacht hatte, den W3C-I18n-Artikel auf Deutsch aufzuschreiben, dann kann man das immer wieder verlinken. ;-)
Kann ich denn trotzdem UTF-8 nutzen (also in der Meta-Angabe) […]
Nein. Wie du in [QA-CHANGING-ENCODING] gelesen hattest, muss die Angabe der Zeichencodierung mit der tatsächlich verwendeten übereinstimmen. Und noch wichtiger als die HTTP-EQUIV-Meta-Angabe ist die Angabe der Zeichencodierung durch den Server im HTTP-Header.
Hm. Mein Editor Phase 5 unterstützt leider kein UTF-8 […]
Hm. Hängst du sehr an diesem Editor? Benutze besser einen anderen, der in UTF-8 speichern kann.
[…] und alle Sonderzeichen wie ös und äs mit Ö kodieren?
„Es ist fast immer besser, eine Zeichencodierung zu benutzen, die es erlaubt, die Zeichen in ihrer normalen Form zu verwenden, anstatt Zeichen-Entity-Referenzen oder numerische Zeichenreferenzen zu verwenden.
Die Verwendung von Escapes macht den Quelltext schlechter lesbar und schwerer zu pflegen und kann auch die Dateigröße beträchtlich erhöhen.“ [QA-ESCAPES]
Außerdem musst du beim Escapen immer den Kontext beachten: 'ä
' und 'ä
' sind Escapes für 'ä' in HTML, nicht aber in JavaScript. Dort wäre es '\u00E4
'.
Lesetip: Zeichencodierung für Dummies* ;-) [QA-WHAT-IS-ENCODING]
Live long and prosper,
Gunnar
* Ich hätte das fast auch so in meine Übersetzung geschrieben. ;-)
Allerdings erscheint jedes ä als ä,
Was schliesst du daraus?
Mit welchem Zeichensatz wurde gesendet
mit welchem Zeichensatz wird gelesen?
HTML Code wird ausgeführt usw.
Wenn es nun eine reine PHP-Seite wäre, könnte ich alle Zeichen beim Speichern in die Datenbank bzw. bei Auslesen aus dieser maskieren bzw. "gegensteuern".
Nein. Du musst nur dafür sorgen, dass der Zeichensatz der Datenbank und der Zeichensatz der Formulare, welche Text für die Datenbank erzeugen, identisch sind.
Da dies aber anscheiend nicht der Fall ist, musst du in der Tat reparieren um den idealen zusatnd herzustellen. Bytes bleiben Bytes, bis man sie ändert.
Leider geht das nicht, weil sowohl beim Speichern als auch beim Lesen der Nachricht die Texte an Javascript-Funktionen übergeben werden.
jaja. Aber geschrieen werden die Dinge doch in ein Formular oder?
Dadurch kann man auch keine einfachen bzw. doppelten Anführungszeichen verwenden.
Im Formular? why the Fuck
Encode die <>"' richtig, bevor du sie Javascript zum Versand übergibst.
Meine Frage an euch: Wie bekomme ich es hin, dass man ALLE Zeichen schreiben kann bzw. darf und dass kein Code ausgeführt werden kann?
mfg Beat
@@Beat:
Was schliesst du daraus?
Mit welchem Zeichensatz wurde gesendet
mit welchem Zeichensatz wird gelesen?
Vermutlich mit einunddemselben.
Was schließt du daraus?
Live long and prosper,
Gunnar
Hallo :)
Leider geht das nicht, weil sowohl beim Speichern als auch beim Lesen der Nachricht die Texte an Javascript-Funktionen übergeben werden.
jaja. Aber geschrieen werden die Dinge doch in ein Formular oder?
Vielleicht hilft es, die Dinge einfach in das Formular zu schrei_b_en?
mfg
cygnus