dedlfix: Wie nutze ich deutsche Umlaute richtig in PhP

Beitrag lesen

Tach!

Für I/O braucht man kein Multibyte-Unterstützung. Die Kodierung spielt nur programmintern eine Rolle wenn z.B. Stringoperationen anzuwenden sind. Bei Ein~ und Ausgabe jedoch ist die Kodierung grundsätzlich abzuschalten.

Thema ist PHP. Wie schaltet man da die Kodierung aus?

Beim Übertragen Richtung Datenbanken übrigens auch, wenn das nicht beachtet wird, gibt es Zeichensalat.

Unsinn. Da ist nichts auszuschalten, sondern mit dem DBMS konkret auszuhandeln, welche Kodierung zu verwenden ist. Das DBMS muss nicht nur Byte-Salat bekommen, sondern es muss die Bedeutung des Inhalts kennen, damit es Stringverarbeitung wie Vergleichen und Sortieren korrekt ausführen kann.

Im Übrigen ist auch MySQL in Sachen UTf-8 noch nicht fertig. Da gibt es auch Probleme wenn Zeichen mit 4 und mehr Bytes kodiert zu Speichern sind.

Unicode definiert Zeichen bis U+10FFFF, und das ist problemlos als UTF-8 mit 4 Byte darstellbar. MySQL kann zugegebenermaßen mit der Kodierungsangabe "utf8" nur 2-Byte-Zeichen verarbeiten, aber "utf8mb4" existiert ebenfalls für die volle Schönheit bis U+10FFFF.

Aber auch diese Zeichen lassen sich problemlos speichen wenn die Kodierung ausgeschaltet wird.

Dann sind es keine Zeichen mehr, sondern Byte-Salat. Natürlich gibt es beim einfachen Speichern keine Probleme. Nur Stringverarbeitung kann man dann nicht mehr im DBMS ausführen lassen.

dedlfix.