[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Dateisysteme, Unicode, UTF-8 und Konvertierungsprobleme



Eduard Bloch wrote:
Ich bin nicht sicher. Redhat 8 geht in die richtige Richtigung:
Alle locales verwenden UTF-8, und das Problem ist gelöst.


Nur bedingt: was ist mit der Umwandlung der vorhandenen Dateinamen?

Die muss man konvertieren (durch Umbenennung). Gewisse Probleme mit mojibake wird man nicht vermeiden können - allerdings sind andere Systeme da auch nicht besser; unter Windows sind beispielsweise nach wie vor *zwei* Zeichensätze in Verwendung: der Zeichensatz im Terminalfenster (OEMCP) ist ein anderer als der im Window-Teil (ACP).

Und
was ist mit Anwendungen, die nicht UTF-8-vorbereitet sind?

An welche denkst Du da genau? Alle meine Anwendungen, die irgendwie
mit Dateinamen zu tun haben, kommen gut mit beliebigen Kodierungen
derselben klar: Entweder ist es ihnen egal, weil sie die sowieso
nur weiterreichen (etwa /bin/ls), oder aber entsprechend der locale
darstellen (Gnome, etc).

Ein gewisses mojibake muss man vermutlich wiederum akzeptieren, bis
die restlichen Bugs gefixt sind: Auch unter Windows haben viele
Programme Schwierigkeiten mit Dateinamen, die in ACP nicht repräsentierbar sind; diese Programme erhalten dann Fragezeichen
anstelle der eigentlichen Zeichen.

- Bei nicht-lateinischen Zeichensätzen benötigen die Zeichen mehr
 Platz, somit schrumpft die maximale Stringlänge beim gleichbleibenden
 reelen Speicherplatz (z.B. in Dateinamen). Womit wir früher oder
 später auf ein anderes Problem zusteuern, Beschränkungen, die man
 z.B. von Joliet kennt (64Zeichen)

Falsch: Das hängt von den nicht-lateinischen Zeichen ab. Kyrillisch,
Armenisch, Hebräisch usw. brauchen in UTF-8 geringfügig weniger Platz als UCS-2 (wenn im Text Leerzeichen vorkommen).


Falsch. Z.B. kyrillische Zeichen verwenden andere Codes, auch wenn sie beinahe
identisch aussehen. Sieh selbst nach.

Hab ich doch gemacht: Nehmen wir als Beispiel CYRILLIC CAPITAL LETTER ZHE, U+0416. In UCS-2 ist das \x04\x16, in UTF-8 ist es \xd0\x96.
In beiden Fällen zwei Byte. An welches Zeichen dachtest Du?

Ciao,
Martin



Reply to: