JavaScript / PHP / SQL... AJAX... Zeichenkodierung?
MiSo
- sonstiges
Ich möchte gerne dem Benutzer nach Bedarf einen bestimmten Eintrag aus einer MySQL-Datenbank-Tabelle holen. Dies über AJAX hinzubekommen mit ein wenig PHP ist kein Problem.
Wos für mich allerdings etwas schwierig wird, ist der Teil, wo man die Daten zurückbekommt. Man hat ja bekanntlich eine tolle UTF-8-Kodierung. Die Daten in der Tabelle erfreuen sich aber lauter sonder(zeichen)barer Eingaben wie z.B. Umlaute, Eurozeichen usw.
Kann ich irgendwas anstellen um die Daten aus der Tabelle dennoch korrekt anzuzeigen, oder ist das ein toter Fall und ich darf zusehen, dass ich alles von vorherein in UTF-8 abspeicher?
mfg
Micha
Hallo
Die Daten in der Tabelle erfreuen sich aber lauter sonder(zeichen)barer Eingaben wie z.B. Umlaute, Eurozeichen usw.
Solche Daten sind für eine Datenbanktabelle normalerweise völlig normale Zeichen und kein bißchen sonderbar. Mit normalen Zeichen geht man auch normal um.
Wos für mich allerdings etwas schwierig wird, ist der Teil, wo man die Daten zurückbekommt. Man hat ja bekanntlich eine tolle UTF-8-Kodierung.
die Du am besten konsequent in allen relevanten Bereichen einsetzt:
Sei konsequent, als Konsequenz hast Du keine Probleme.
Freundliche Grüße
Vinzenz
die Du am besten konsequent in allen relevanten Bereichen einsetzt:
Ich spreche 4 Sprachen fließend und quäl mich mit ner 5en rum. Soll ich jetzt in einer "deutschsprachigen" Umgebung Englisch sprechen, damit meine Aussagen "Standardkonformer" sind?
mfg
Micha
echo $begrüßung;
die Du am besten konsequent in allen relevanten Bereichen einsetzt:
Ich spreche 4 Sprachen fließend und quäl mich mit ner 5en rum. Soll ich jetzt in einer "deutschsprachigen" Umgebung Englisch sprechen, damit meine Aussagen "Standardkonformer" sind?
Nein, das wäre nicht ganz mit deinem Problem vergleichbar. Von ISO-8859-1 auf UTF-8 zu wechseln bedeutet von westeuropäisch auf international umstellen, um von 256 unterstützten Zeichen auf 1.048.576 zu gehen. Damit wirst du nicht standardkonformer, du wechselst nur von einem kleinen Standard auf einen großen.
echo "$verabschiedung $name";
Nein, das wäre nicht ganz mit deinem Problem vergleichbar. Von ISO-8859-1 auf UTF-8 zu wechseln bedeutet von westeuropäisch auf international umstellen
Naja. Ich nenns mal "sich aufs wesentliche beschränken".
Ich hab übrigens festgestellt, dass alles wunderbar funktioniert. Die einzigen Probleme, die überhaupt in irgendeiner Form auftauchen, ist die Kodierung der Rückgabewerte. Das lässt sich simpel... umgehen (jaha... workarounds sind beschissen... who cares?), indem man im php script alles in den OB schreibt und diesen per utf8_encode verschlüsselt. Die Daten kommen dann so an wie mans haben möchte und braucht sich nicht damit rumzuplagen alles auf UTF8 umzustellen (allein schon weil ich mit ner vorgegebenen Datenbank arbeite, an der ich nichts ändern kann/soll).
mfg
Micha
echo $begrüßung;
Nein, das wäre nicht ganz mit deinem Problem vergleichbar. Von ISO-8859-1 auf UTF-8 zu wechseln bedeutet von westeuropäisch auf international umstellen
Naja. Ich nenns mal "sich aufs wesentliche beschränken".
Leider beschränken sich Anwender nicht "auf's Wesentliche". Die verwenden auch auf ISO-8859-1-Seiten bei Eingaben in Input/Textarea-Felder einfach deutsche typografische Anführungszeichen [*], die nicht in ISO-8859-1 enthalten sind. Die Browser sind dann so frei, eine Ersatzdarstellung in der Form &#xxx; draus zu machen und dir zu senden, und so landet es dann auch in der Datenhaltung. Da du ein sicherheitsbewusster Programmierer bist, wendest du htmlspecialchars() auf die auszugebenden Daten an und zeigst dann diese Ersatzdarstellung auf deiner Seite an, weil das & durch ein & ausgetauscht wurde. Und nun stehst du da und weißt nicht mit Sicherheit zu sagen, wann das & in deinen auszugebenden Daten gewollt ist und wann nicht.
Auch solche marginalen Probleme lassen sich durch den unwesentlich höheren Aufwand, konsequent mit einer allumfassenden Kodierung zu arbeiten, von vornherein umgehen.
echo "$verabschiedung $name";
[*] Auch (m-breite und n-breite) Gedankenstriche statt Bindestriche sieht man gelegentlich. Das trifft vor allem zu, wenn Anwender ihren Text in MS-Word vorschreiben, dort die automatische Zeichenersetzung nicht deaktiviert haben und dann diesen Text kopieren und in das Eingabefeld einfügen.
echo $begrüßung;
Die [Anwender] verwenden auch auf ISO-8859-1-Seiten bei Eingaben in Input/Textarea-Felder einfach deutsche typografische Anführungszeichen, die nicht in ISO-8859-1 enthalten sind. Die Browser sind dann so frei, eine Ersatzdarstellung in der Form &#xxx; draus zu machen und dir zu senden
Als Nachtrag verweise ich noch auf einen aktuellen Thread, in dem u.A. diese Ersetzungsvorgehensweise der verschiedenen Browser etwas ausführlicher beschrieben wurde: https://forum.selfhtml.org/?t=134357&m=871476
echo "$verabschiedung $name";
Hi
Wos für mich allerdings etwas schwierig wird, ist der Teil, wo man die Daten zurückbekommt. Man hat ja bekanntlich eine tolle UTF-8-Kodierung. Die Daten in der Tabelle erfreuen sich aber lauter sonder(zeichen)barer Eingaben wie z.B. Umlaute, Eurozeichen usw.
Ich glaube dieses Problem liegt beim PHP!
htmlentities()
urldecode()
urlencode()
Wenn du nicht weist wie die Dinger funktionierent schau unter php.net nach.
Sind sehr einfache Funktionen, wirst daher ein recht "primitives" Skript erhalten,
Mfg
Splinter