Sven Rautenberg: größe eines string in byte

Beitrag lesen

Moin!

Der Browser schickt dir daraufhin eine Ersatzdarstellung in der Form ǒ. Das sind trotz maxlength=1 schlappe 6 Zeichen. Was nun?

Diese Ersatzdarstellung schicken nur kaputte Browser. Leider muß man derzeit dem Firefox attestieren, in diesem Fall kaputt zu sein. Der Bug ist schon seit Jahren offen, wird aber anscheinend ignoriert, oder bereitet zu große Probleme beim Programmierteam.

Verwende lieber eine Zeichenkodierung mit der praktisch alle Zeichen repräsentierbar sind, beispielsweise UTF-8.

Diesen Rat kann ich uneingeschränkt unterstützen. Insbesonder aufgrund der ziemlich kaputten Verhaltensweisen mancher Browser, wenn es darum geht, nicht-codierbare, aber vom User eingegebene Zeichen in einem Formular abzuschicken.

Und da fangen dann auch die Probleme an. Nicht alle Ausgaben von MySQL können mit Multibyte-Kodierungen umgehen (sprich: Versionen kleiner als 4.1). Datenbank und Clients müssen sich über die verwendete Kodierung abstimmen. PHP kann noch nicht vollständig mit UTF-8 umgehen oder entsprechende Erweiterungen sind beim Provider nicht installiert. Und so weiter und so fort. Nichtsdestotrotz ist UTF-8 derzeit die sinnvollste Möglichkeit, Probleme mit der Repräsentierung von Zeichen zu lösen.

Sagen wir es mal so: Die entstehenden Probleme sind beherrschbar, wenn man bei der Entwicklung bedenkt, dass sie auftreten können.

strtolower() ist beispielsweise eine nette PHP-Funktion - sie funktioniert aber mit UTF-8-Strings überhaupt nicht, man kann also aus einem UTF-8-Ü kein kleines ü machen, sondern zerstört damit das Zeichen komplett. Aber oftmals gibt es Ersatz. Eine UTF-8-fähige Datenbank bietet ja auch Stringfunktionen, man muß die Wandlung in Kleinbuchstaben also eventuell einfach nur ins SQL-Statement verschieben.

PS: Javascript arbeitet grundsätzlich in Unicode, da gibt es gar keine alternativen Codierungen. Genauso wie HTML grundsätzlich alle Unicode-Zeichen unterstützt, das Resultat von beispielsweise Formularfeldvorbelegungen (die man mit Javascript abfragen kann) ist, unabhängig von der Codierung der HTML-Quelltexte, also immer ein Unicode-String (wobei man sich in Javascript nicht mal um die konkrete Codierung, also UTF-8 etc., kümmern muß - es funktioniert einfach).

- Sven Rautenberg

--
"Love your nation - respect the others."