mmofacts.com

Ä ö ü als komische Zeichen verhindern...

gepostet vor 16 Jahre, 3 Monate von azamaroth

Hiho.

Ein User meines Browsergames hat öfter das Problem, dass "ä ö ü" als andere Zeichen dargestellt werden. Somit funktionieren auch einige Aktionen nicht bei ihm. Was muss ich tun, damit das Problem nicht mehr auftaucht?

Ich habe es mal irgendwo gelesen, weiß aber leider nicht mehr, was es war.

gepostet vor 16 Jahre, 3 Monate von sollowman

Normalerweise hängt das doch mit deinen Server- und Datenbankeinstellungen zusammen. Du kannst die Zeichen auch im Code darstellen: ä - ä und ö - ö und ü - ü  und große Buchstaben dann halt z.B. Ä

gepostet vor 16 Jahre, 3 Monate von knalli

Naja, so einfach ist das nicht.

Du musst dich konsequent (okay, du kannst das auch gerne Seite für Seite einzeln entscheiden, wenn du weißt was du tust..) für deine ganze Anwendung entscheiden, ob du UTF-8 oder einen gängigen ISO ausgibst. Alle Ausgabestrings müssen dann entsprechend umgewandelt werden. Wenn du UTF-8 verwendest, musst du keine Umlaute und Sonderzeichen (außer den 5 XML-Zeichen) umwandeln, wenn du ISO nimmst, musst du sie umwandeln. Benutzt du eine Mischung (DB in UTF-8, Ausgabe in ISO), musst du auf jeden Fall jede Eingabe prüfen und wahrscheinlich auch jede Ausgabe von UTF-8 in ISO umwandeln.

Ein häufiges Problem der "Sonderzeichen" ist, wenn Browser und Webserver verschiedener Meinung über den Inhalt sind. Das läßt sich mit einem Header ändern.. der "Content-Type" (php: header()) zeichnet das Dokument wie XML oder HTML aus.. die Angabe in HTML (meta) oder XML (encoding) sind eigentlich irrelevant..

Bei heutigen (neuen) Anwendungen wird man in der Regel mit UTF-8 arbeiten (Datenbank, HTML, XML, CSS, JS), aber das PHP wird aus Kompatibilitätsgründen häufig in ISO verfasst.

gepostet vor 16 Jahre, 3 Monate von Bringer

Original von azamaroth

Ein User meines Browsergames hat öfter das Problem

Wenn es wirklich "nur" ein User ist, dann würde ich erstmal auf einen Fehler bei selbigem Tippen oder knalli?

Etliche Webbrowser geben dem Nutzer die Möglichkeit die Zeichensatzcodierung selbst festzulegen. So z.B. Firefox, bei welchem man unter Ansicht->Zeichenkodierung wählen kann welchen Zeichensatz man möchte.

Wenn dort ein User eine von dir ungewuenschte Kodierung festgelegt hat, dann hilft dir auch in manchen Fällen der Header deiner Dateien nicht mehr weiter...

gepostet vor 16 Jahre, 3 Monate von knalli

Es kann aber dennoch sein, dass es Missmatch zwischen Webserver und Inhalt da ist.. und das ausgerechnet der BRowser der einen Person nicht intelligent genug ist, das "richtige" zu machen.

Ist alles richtig eingestellt, haben eigentlich keine Browser damit Probleme.. die Sonderzeichen treten erst bei inkonsequenter Ausgabe auf. Wie gesagt, bsp. durch ein fehlendes UTF-encodieren wenn man auf UTF-8 setzt.

gepostet vor 16 Jahre, 3 Monate von Bringer

Schlagendes Argument... muss ich zugeben

gepostet vor 16 Jahre, 2 Monate von azamaroth

Hmm.... ok danke erstmal für die Antworten.

Aber wie genau gebe ich dem Browser das nun mit, dass er eine bestimmte Kodierung nehmen soll?

D.H. Welche Tags muss ich dafür verwenden. Ich weiß nämlich nicht wirklich wonach ich suchen soll.

gepostet vor 16 Jahre, 2 Monate von Drezil

Keine Tags. Das wird im Header mitgesendet, den normalerweise PHP oder dein Webserver erstellt.

Am besten einfach mal in de Konfig deines Webservers schauen oder googlen.

gepostet vor 16 Jahre, 2 Monate von azamaroth

Kann es auch daran liegen, dass ich verschiedene Kodierungen bei den einzelnen Tabellen der Datenbank verwende?

gepostet vor 16 Jahre, 2 Monate von Klaus

Na soweit solltest du deine Datenbank aber kennen.

gepostet vor 16 Jahre, 2 Monate von knalli

Original von Drezil

Keine Tags. Das wird im Header mitgesendet, den normalerweise PHP oder dein Webserver erstellt.

Am besten einfach mal in de Konfig deines Webservers schauen oder googlen.

Auf die Einstellung des Webservers würde ich mich nur nie verlassen und dann bist du auch verlassen. Ein ordentlicher Header sollte schon in PHP geschickt werden, natürlich vor jeder Ausgabe (ob nun vor einem "echo" oder mit aktiviertem Ausgabehandler) und ggf. Session, Expires und anderen Cache-Funktionen. Content-Type ist auch oft etwas, was viele vergessen. Oder erst aufmerksam werden, wenn sie mal nicht html senden (Bilder, XML, CSS).

gepostet vor 16 Jahre, 2 Monate von omarius

KEEP IT UTF8 !

gepostet vor 16 Jahre, 2 Monate von knalli

Original von omarius

KEEP IT UTF8 !

Nur mal so, als Gedankenspiel: Du sagst dem Browser also, wenn er das Dokument bereits in einem Content-Type vorliegen hat und DANN liest, dass es einen (anderen) Content-Type hat?

Das ganze hat einen entscheidenen Logikfehler; das macht die o.g. Angabe zwar nicht komplett obselet und ist "sicher" ergänzend - löst aber kein Problem, sondern verursacht eher neue.

gepostet vor 16 Jahre, 2 Monate von omarius

Original von knalli

Original von omarius

KEEP IT UTF8 !

Nur mal so, als Gedankenspiel: Du sagst dem Browser also, wenn er das Dokument bereits in einem Content-Type vorliegen hat und DANN liest, dass es einen (anderen) Content-Type hat?

Das ganze hat einen entscheidenen Logikfehler; das macht die o.g. Angabe zwar nicht komplett obselet und ist "sicher" ergänzend - löst aber kein Problem, sondern verursacht eher neue.

Ehm, nein ich sag dem Browser damit um welches Charset es sich handelt, weil dieser eine Spieler ja anscheinend seinen browser nicht richtig eingestellt kriegt. Also klar Voraussetzung ist dass es sich bei den Daten dann um UTF-8 handelt

gepostet vor 16 Jahre, 2 Monate von knalli

Du verstehst mich nicht.. das kann der Browser aber erst sehen, wenn er das Dokuments bereits eingelesen hat. Deswegen würde ein bereits gesendeter HTTP-Header Content-Type auch Vorrang haben. Und deswegen ist alleine diese Angabe einfach nur Unfug.

gepostet vor 16 Jahre, 2 Monate von omarius

asooo, das hießt sowas ist nur dann nur für statische html-seiten etwas?

wie würde denn nen header in PHP mitgeben?

gepostet vor 16 Jahre, 2 Monate von omarius

ah super danke ;)

gepostet vor 16 Jahre, 2 Monate von knalli

Original von omarius

asooo, das hießt sowas ist nur dann nur für statische html-seiten etwas?

wie würde denn nen header in PHP mitgeben?

Es kann uU auch Probleme geben, wenn dein Server für etwas Statisches da einen entsprechenen Header sendet (nichts anderer tut der PHP-Handler).

Ansonsten, s. o.g. Link.

Auf diese Diskussion antworten