Unicode und UTF in Win10 und Linux

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
lzuser
Beiträge: 97
Registriert: Sa 20. Jun 2009, 16:00
OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
CPU-Target: 64Bit

Unicode und UTF in Win10 und Linux

Beitrag von lzuser »

Win10 2004, Laz 2.0.8 auch Linux Mint 20, Laz 2.0.6

Immer mal wieder das gleiche Thema!
Win10: Unicode UTF16 - richtig?
Linux: Unicode UTF8 - richtig?
So nebenbei: Warum der Unterschied?

Und Lazarus UTF? auf Win10, auf Linux?
Delphi auf Win10 UTF16?

Memo, SynEdit, RichMemo
Benutzen die dann automatisch Unicode und das UTF? des Betriebssystems?

In Win10 habe ich schon einiges mit SynEdit probiert, aber immer mehr oder weniger erfolgreich die Routinen zu UTF8 benutzt. Jetzt wollte ich einiges auf RichMemo übertragen, nicht immer erfolgreich:
z.B. ISO_8859_1ToUTF8 funktioniert nicht, meine Routine zum Anzeigen des Unicodes auch nicht.
Welche Units/Proceduren kann man denn nun wo benutzen?

Einen ausführlichen Artikel zu den Zeichensätzen bis hin zu Unicode und deren Codierung in UTF? habe ich schon hinter mir, aber mir fehlt ein wenig systemisches Grundwissen zu den Zusammenhängen.
Ein paar Hinweise? Ein paar Quellen zum genauen Nachlesen?
Danke schon mal.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Unicode und UTF in Win10 und Linux

Beitrag von theo »

Lazarus verwendet immer UTF8 in der Programmierschnittstelle.
Also alles was du normalerweise antriffst, ist UTF8, auch auf Windows.
Mehr dazu gibt es hier:
https://wiki.freepascal.org/LCL_Unicode_Support/de

Wenn du konkrete Fragen hast, kannst du auch in diesem Forum nachfragen oder suchen.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Unicode und UTF in Win10 und Linux

Beitrag von Socke »

lzuser hat geschrieben:
Mo 9. Nov 2020, 15:30
Immer mal wieder das gleiche Thema!
Win10: Unicode UTF16 - richtig?
Linux: Unicode UTF8 - richtig?
So nebenbei: Warum der Unterschied?
Windows verwendet intern UTF-16 (in älteren Versionen nur UCS-2); dazu gehören auch die Dateinamen auf NTFS-Partitionen.
Der Linux-Kernel kann sogar gar kein Unicode. Bei Dateinamen werden nur nullterminierte Zeichenketten verarbeitet. Somit wären mit UTF-16 nur äußert kurze (und in der Regel falsche) Dateinamen möglich. In der Praxis hat man sich auf UTF-8 geeinigt, damit alle Programme mit einem einzigen Standard arbeiten können.
Warum der Unterschied? Windows NT wurde entwickelt, bevor es UTF-8 gab, oder man hat zumindest davor angefangen. Bei Linux konnte man durch relativ kleine Änderungen auf UTF-8 wechseln ohne die gesamte API zu duplizieren (wie Windows es gemacht hat).
lzuser hat geschrieben:
Mo 9. Nov 2020, 15:30
Und Lazarus UTF? auf Win10, auf Linux?
Delphi auf Win10 UTF16?
Lazarus verwendet auf allen Plattformen UTF-8 für die grafische Oberfläche. Das schließt auch das Memo ein. SynEdit kann möglicherweise mit verschiedenen Kodierungen umgehen.
Wenn du mit Dateien, Terminalausgaben etc. arbeitest, musst du aber aufpassen, da unter Windows hier kein UTF-8 genutzt wird.
Delphi ist irgendwann komplett zu UTF-16 gewechselt.
lzuser hat geschrieben:
Mo 9. Nov 2020, 15:30
Einen ausführlichen Artikel zu den Zeichensätzen bis hin zu Unicode und deren Codierung in UTF? habe ich schon hinter mir, aber mir fehlt ein wenig systemisches Grundwissen zu den Zusammenhängen.
Ein paar Hinweise? Ein paar Quellen zum genauen Nachlesen?
Einen sehr schönen englischsprachigen Beitrag zu dem Thema (nicht Pascal-spezifisch) findest du bei The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

lzuser
Beiträge: 97
Registriert: Sa 20. Jun 2009, 16:00
OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
CPU-Target: 64Bit

Re: Unicode und UTF in Win10 und Linux

Beitrag von lzuser »

Danke für die Hinweise, wieder was gelernt...
Sehr ausführlich der genannte Artikel.
Ich hätte dann auch noch eine ähnliche Quelle:
www.marcelwicki-softwaredesign.ch
Eine Übersicht über ASCII, ISO 8859, ANSI, Unicode und die Unicode-Kodierungen UTF-8, UTF-16 und UTF-32
Viel Stoff...

Antworten