1. Foren
  2. Kommentare
  3. Internet-Forum
  4. Alle Kommentare zum Artikel
  5. › Drei Jahrzehnte Unicode: Alles…

Ich finde Unicode scheiße kompliziert

Neue Foren im Freiraum! Raumfahrt und freie Software haben jetzt einen Platz, die Games tummeln sich jetzt alle in einem Forum.
  1. Thema

Neues Thema


  1. Ich finde Unicode scheiße kompliziert

    Autor: stefan@stefanfrings.de 27.03.22 - 13:59

    Insbesondere dass

    - man nicht mehr einfach nach dem numerischen Code sortieren kann
    - man nicht mehr ein Bit ändern kann um zwischen Groß/Kleinschrift zu wechseln
    - manche Zeichen übereinander auf eine Stelle geschrieben werden
    - es unsichtbare Zeichen gibt, die dennoch eine Funktion haben
    - manche Zeichen doppelt vorkommen
    - das es so viele unterschiedliche Codierungen (UTF-8, UTF-32, UCS-2, etc. gibt)
    - das nicht mehr eindeutig klar ist wie man Anforderungen wie "Eingabe von maximal 20 Zeichen" implementieren soll, und dass Rückfragen dazu fast immer mit einem "Hä, wo ist das Problem?" beantwortet werden. Bis der erste Firmenkunde an der Eingabe seines Namens scheitert, der wie 20 Zeichen aussieht aber 21 Zeichen lang ist.

    Aber leider ist das kein Fehler vom Unicode Standard selbst, denn die Sprachen die es darstellen soll sind so kompliziert. Was mich schwerst wundert ist, dass das cmd Fenster von Windows immer noch einen 8 Bit Zeichensatz verwendet, und der entspricht nicht einmal dem ISO-8859-1.



    3 mal bearbeitet, zuletzt am 27.03.22 14:05 durch stefan@stefanfrings.de.

  2. Re: Ich finde Unicode scheiße kompliziert

    Autor: Sharra 27.03.22 - 15:28

    Wieso wundert dich das?
    Es ist doch noch nicht 2100, und vorher sind solche modernen Dinge bei MS nicht als Standard anerkannt.

  3. Re: Ich finde Unicode scheiße kompliziert

    Autor: theuserbl 27.03.22 - 15:40

    "Was mich schwerst wundert ist, dass das cmd Fenster von Windows immer noch einen 8 Bit Zeichensatz verwendet, und der entspricht nicht einmal dem ISO-8859-1."

    Was ist daran so verwunderlich?
    Das cmd Fenster ist halt verlatete Software. Das Moderne ist das Windows Terminal, das aktuell in einer neuen Version erschienen ist.

    https://www.drwindows.de/news/windows-terminal-neue-version-1-12-1073-bringt-gesondertes-paket-fuer-windows-11

    Und ja, aus Kompatiblitätsgründen existieren cmd Fenster und Windows Terminal nebeneinander her.
    Genauso wie die Powershell neben dem cmd.exe nebenher existiert.
    Wobei das cmd.exe seinerseits mit "dir /x" noch immer zeigt, dass so manche Datei noch immer auch als 8+3 Datei gespeichert wird.

    Und ja, ich finde auch, dass das nebeneinander herlaufen etwas unglücklich gelöst ist.
    Erinnert irgendwie etwas an OS/2, wo es neben der OS/2 Konsole
    [C:\]
    die MS-DOS Konsole gab
    C:\>
    Und wo Win16-Anwendungen in einem extra Fenster liefen.

    OS/2 hatte sich aber nicht durchgesetzt, sondern Windows, bei dem Win32-Kommandozeilenprogramme und DOS-Programme in einem Fenster liefen.
    Wo Win16-Programme neben Win32-Programmen nebenherliefen.

    Ich denke, Microsoft sollte aktuell auch einiges mehr miteinander verschmelzen.



    1 mal bearbeitet, zuletzt am 27.03.22 15:43 durch theuserbl.

  4. Re: Ich finde Unicode scheiße kompliziert

    Autor: theuserbl 27.03.22 - 16:11

    Ach ja, auch Golem schreibt, dass das Windows Terminal bald der Standard unter Windows sein wird.

    https://www.golem.de/news/windows-11-windows-terminal-kann-zum-standardprogramm-werden-2110-160517.html

    https://www.golem.de/news/microsoft-windows-terminal-wird-cmd-als-standard-in-windows-11-abloesen-2112-161816.html

  5. Re: Ich finde Unicode scheiße kompliziert

    Autor: peterbruells 28.03.22 - 07:58

    stefan@stefanfrings.de schrieb:
    --------------------------------------------------------------------------------
    > Insbesondere dass
    >
    > - man nicht mehr einfach nach dem numerischen Code sortieren kann

    Das konnte man noch nie.

  6. Re: Ich finde Unicode scheiße kompliziert

    Autor: TheUnichi 28.03.22 - 09:59

    stefan@stefanfrings.de schrieb:
    --------------------------------------------------------------------------------
    > - man nicht mehr einfach nach dem numerischen Code sortieren kann

    Warum sollte man das bei Abertausenden von Zeichen wollen? Wofür?

    > - man nicht mehr ein Bit ändern kann um zwischen Groß/Kleinschrift zu
    > wechseln

    Wen interessiert das? Im Userland ist so was völlig hinfällig, da existieren Funktionen für, in jeder Sprache nativ

    > - manche Zeichen übereinander auf eine Stelle geschrieben werden

    Das lässt sich gar nicht anders lösen, oder willst du den Kanji-Menschen eine Tastatur geben die einen ganzen Fußboden füllt? Oder für Sprachen mit vielen Sonderformen der Buchstaben jedes mal übergroße Tastaturen bauen?

    Dort werden die Zeichen auch mit 2 Tasten getippt.

    > - es unsichtbare Zeichen gibt, die dennoch eine Funktion haben

    War bei den vorigen Zeichensätzen auch so, ein \t oder ein \v, Null-Byte, Backspace existierten dort auch bereits

    > - manche Zeichen doppelt vorkommen

    Das macht natürlich die Konvertierung aus bestehenden Codesets leichter

    > - das es so viele unterschiedliche Codierungen (UTF-8, UTF-32, UCS-2, etc.
    > gibt)

    Das ist der Migration zu schulden, sind aber heute weitesgehend Deckungsgleich

    > - das nicht mehr eindeutig klar ist wie man Anforderungen wie "Eingabe von
    > maximal 20 Zeichen" implementieren soll, und dass Rückfragen dazu fast
    > immer mit einem "Hä, wo ist das Problem?" beantwortet werden. Bis der erste
    > Firmenkunde an der Eingabe seines Namens scheitert, der wie 20 Zeichen
    > aussieht aber 21 Zeichen lang ist.

    Wenn man seine strlen() Funktion nicht hart als Extension selbst kompiliert sondern die normalen UTF-8 Facilities einer jeder Sprache dafür verwendet, hat man dieses Problem nicht. Ich programmiere seit mind. 8 Jahren ausschließlich mit UTF-8 und hatte derartige Probleme noch nie. Wie läuft man in so was?

    > Aber leider ist das kein Fehler vom Unicode Standard selbst, denn die
    > Sprachen die es darstellen soll sind so kompliziert. Was mich schwerst
    > wundert ist, dass das cmd Fenster von Windows immer noch einen 8 Bit
    > Zeichensatz verwendet, und der entspricht nicht einmal dem ISO-8859-1.

    Welche Sprache macht es denn so kompliziert? Wechsel doch die Sprache?

  7. Re: Ich finde Unicode scheiße kompliziert

    Autor: Vanger 28.03.22 - 11:28

    stefan@stefanfrings.de schrieb:
    --------------------------------------------------------------------------------
    > Insbesondere dass
    >
    > - man nicht mehr einfach nach dem numerischen Code sortieren kann

    Wann ging das denn überhaupt? Mit ASCII fürs Englische - ansonsten aber nicht. Dazu kommt, dass unterschiedliche Sprachen die Sortierreihenfolge für die selben Zeichen unterschiedlich definieren.

    > - man nicht mehr ein Bit ändern kann um zwischen Groß/Kleinschrift zu
    > wechseln

    Wozu braucht man das? Unabhängig davon: Es gibt Sprachen bei denen existieren keine, mehrere oder aus mehreren anderen Zeichen zusammengesetzte Äquivalente in der jeweiligen Groß- bzw. Kleinschrift eines Zeichens.

    Selbst im Deutschen kennen wir das beim ß, dessen Äquivalent bis 2017 das SS (zuvor teilweise auch SZ) war - ẞ ist eine recht neue und technokratische Entwicklung, von welcher der Großteil der deutschsprachigen Bevölkerung auch noch nie etwas gehört hat.

    > - manche Zeichen übereinander auf eine Stelle geschrieben werden

    In diversen Schriftsystemen werden Zeichen aber nun mal genau so gebildet. Die Kombinationsmöglichkeiten sind zu zahlreich, als dass man diese einzeln aufnehmen könnte.

    > - es unsichtbare Zeichen gibt, die dennoch eine Funktion haben

    Das war bei ASCII mit den Steuerzeichen doch auch schon so...

    > - manche Zeichen doppelt vorkommen

    Ja, die lieben Altlasten...

    > - das es so viele unterschiedliche Codierungen (UTF-8, UTF-32, UCS-2, etc.
    > gibt)

    "Die perfekte" Kodierung gibt es nicht und kann es auch nicht geben. Die Kodierungen haben ihre Vor- und Nachteile, deren Abwägung man den Entwicklern überlässt. Entscheidend ist doch, dass alle Kodierungen den gleichen Zeichensatz abbilden und untereinander vollständig kompatibel sind. Wobei letzteres in Vergangenheit tatsächlich auch Probleme bereitet hat: CESU-8 ist entstanden, weil Software die Rekodierung von UTF-16 in UTF-8 falsch umgesetzt haben.

    > - das nicht mehr eindeutig klar ist wie man Anforderungen wie "Eingabe von
    > maximal 20 Zeichen" implementieren soll, und dass Rückfragen dazu fast
    > immer mit einem "Hä, wo ist das Problem?" beantwortet werden. Bis der erste
    > Firmenkunde an der Eingabe seines Namens scheitert, der wie 20 Zeichen
    > aussieht aber 21 Zeichen lang ist.

    Wieso ist das ein Problem? Unicode definiert sehr genau was ein "Zeichen" ist, du musst lediglich die multibyte-fähigen Tools verwenden. Dann wird der Firmenkunde auch seine 20 Zeichen eingeben können und seine Eingabe auch als 20 Zeichen bewerten.

    Viel spannender ist für einen Entwickler die Frage wie viel Speicher nun für diese Zeichenkette alloziert werden muss - und das lässt sich tatsächlich nur schwer beantworten. Wir lösen das in der Regel so, dass wir für eine 20 Zeichen lange UTF-8-kodierte Zeichenkette 60 Byte vorsehen und bei Überschreitung die normale "Eingabe zu lang"-Fehlermeldung ausgeben. Theoretisch kann das zu Verwunderung führen ("Wieso, meine Zeichenkette ist doch genau 20 Zeichen lang?"), in der Praxis ist das aber noch nie aufgetreten.

    > Aber leider ist das kein Fehler vom Unicode Standard selbst, denn die
    > Sprachen die es darstellen soll sind so kompliziert.

    Wahre Worte, wahre Worte...

    > Was mich schwerst
    > wundert ist, dass das cmd Fenster von Windows immer noch einen 8 Bit
    > Zeichensatz verwendet, und der entspricht nicht einmal dem ISO-8859-1.

    Windows halt ;-)

  8. Re: Ich finde Unicode scheiße kompliziert

    Autor: blbm9 28.03.22 - 12:50

    stefan@stefanfrings.de schrieb:
    --------------------------------------------------------------------------------
    > Insbesondere dass
    >
    > - man nicht mehr einfach nach dem numerischen Code sortieren kann

    Sortieren nach Code ging auch schon vorher nicht, wegen 'a' < 'b' < 'ä'.

  9. Re: Ich finde Unicode scheiße kompliziert

    Autor: LASERwalker 28.03.22 - 14:10

    Ich muss deinen Titel korrigieren:
    Nicht Unicode ist kompliziert, die menschliche Sprache und Schrift sind es. Nur können Programmierer das nicht ändern, auch wenn es anders eleganter wäre.

    > - man nicht mehr einfach nach dem numerischen Code sortieren kann
    Das ging sowieso nie. Lies den Wiki Artikel zur alphabetischen Sortierung und du weisst wieso.

    > - man nicht mehr ein Bit ändern kann um zwischen Groß/Kleinschrift zu
    > wechseln
    Das ist nicht ein Problem von Unicode sondern von der Codierung. Da die ersten 127 Zeichen von UTF8 gleich sind wie ASCII geht das dort immer noch.
    Der Nutzen davon ist aber sowieso sehr gering.

    > - manche Zeichen übereinander auf eine Stelle geschrieben werden
    Das ist ein Feature und in Sprache wie Vietnamesisch sehr nützlich.

    > - es unsichtbare Zeichen gibt, die dennoch eine Funktion haben
    Ist bei ASCII auch so.

    > - manche Zeichen doppelt vorkommen
    Es kommen keine exakt gleichen Zeichen doppelt vor.

    > - das es so viele unterschiedliche Codierungen (UTF-8, UTF-32, UCS-2, etc.
    > gibt)
    Was dich als Entwickler fast nie interessieren muss. Gespeicherung und übertragen wird praktisch nur mit UTF-8. Für die interne Verarbeitung arbeitet man eh mit den Codepoints.

    > - das nicht mehr eindeutig klar ist wie man Anforderungen wie "Eingabe von
    > maximal 20 Zeichen" implementieren soll, und dass Rückfragen dazu fast
    > immer mit einem "Hä, wo ist das Problem?" beantwortet werden. Bis der erste
    > Firmenkunde an der Eingabe seines Namens scheitert, der wie 20 Zeichen
    > aussieht aber 21 Zeichen lang ist.
    Nur wenn man die Zeichen falsch zählt. Es ist deine Aufgabe als Entwicker den Unterschied zwischen Codepoints und UTF-16 Units zu kennen und zu bestimmen ob man Grapheme zählt oder nicht. Das ist nicht die Aufgabe des Kunden.

  1. Thema

Neues Thema


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. IT Information Security Analyst (m/w/d)
    Hirschvogel Holding GmbH, Denklingen
  2. ERP-Systemadministrator (m/w/d)
    Systeme Helmholz GmbH, Großenseebach
  3. Softwareentwickler (m/w/d) Testinfrastruktur
    SEMIKRON Elektronik GmbH & Co. KG, Nürnberg
  4. Spezialistin Supportmanagement (m/w/d)
    Stadtwerke München GmbH, München

Detailsuche


Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Spiele-Angebote
  1. 21,37€ mit Gutscheincode TROOPERS
  2. (u. a. Tales of Arise - Ultimate Edition für 46,99€, For Honor für 6,99€, Sword Art Online...
  3. 3,49€
  4. (stündlich aktualisiert)


Haben wir etwas übersehen?

E-Mail an news@golem.de