UTF-16LE-Zeichen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Toshy
Beiträge: 710
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

UTF-16LE-Zeichen

Beitrag von Toshy »

Hallo.

Wie kann ich UTF-16 (LE steht vermutlich für Little Endian) aus dem Speicher auslesen und zurück schreiben?

In der Hilfe und diesem Forum habe ich dazu nichts gefunden.

UTF16 und "Unicode" scheinen wohl nicht ganz das gleiche zu sein. Wie auch immer, vielleicht kann mir dabei jemand helfen das zu verstehen und hin zu bekommen.

Oder ist das PB "interne Unicode" genau das was man unter UTF-16 versteht?
An einigen Stellen gibt es Hinweise, daß dies nicht so ist (nur mein English ist zu schlecht um es zu verstehen).

Nachtrag:
Hautpsächlich will ich nur einen String aus dem Speicher auslesen und anzeigen. Und zurück schreiben / kopieren. Ändern noch nichts, könnte allerdings passieren. Umkopieren könnte ich auch per Speicherbefehl.
Mir geht es hier nur um das Verständnis und die Sicherheit des Codes.

Soweit ich sehe, ist in meinem Fall auch immer nur ein zwei Byte (es gibt wohl mehr) UTF16 String vorhanden. Vielleicht hat das LE uach damit was zu tun.

Ich möchte nur wissen, wie ich den Text "korrekt" aus dem speicher lese, ändere, und zurückschreibe. UNICODE aus PB oder wie? UTF-8 ist ja extra aufgeführt, UTF16 nicht. Ich vermute zwar grob wie es läuft, bin mir da allerdings nicht sicher.
Wenn in einem UTF-16 String mal zwei, mal mehr Bytes drinn sind, muß das PB ja irgendwo drann erkennen können. oder ich. Also es würde mir ja schon ausreichen, wenn es dann eine Fehlermeldung oder so gut. Ich verstehe halt nicht, wie erkannt werden kann (von PB) ob 2 oder mehr Bytes für ein Zeichen verwendet werden sollen. Da es keine Steuerzeichen zu geben scheint, könnte ich vermuten eine bestimmte Bitfolge in einem der ersten beiden Bytes weißt an das mehr Bytes verwendet werden müssen.

Leider bin ich gerade eben erst auf dieses (mögliche) Problem gestoßen. In meinem Fal ist es vermutlich noch Keines.


Danke Toshy
Zuletzt geändert von Toshy am 06.05.2019 21:53, insgesamt 1-mal geändert.
1. AMD Athlon II X2 250P,4GB-RAM,WinXP
2. Notebook,500mhz,128MB-RAM,WINXP
3. WHS 2003
Inet: 6Mbit Down/386Kbit Up,Flat
PB4.60
Messenger: Trillian
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: UTF-16LE-Zeichen

Beitrag von Josh »

Toshy hat geschrieben:In der Hilfe und diesem Forum habe ich dazu nichts gefunden.
Schau mal in der Hilfe unter ReadStringFormat().
Hilfe hat geschrieben:#PB_Unicode: UTF-16 (Little Endian) BOM gefunden.
Toshy
Beiträge: 710
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Re: UTF-16LE-Zeichen

Beitrag von Toshy »

Hallo.

ERstmal danke.

Ich hatte gerade noch meinen Text etwas geändert. Da kam schon die erste Anwort.

Das kenne ich aus der Hilfe, hilft mir leider nicht wirklich.
Denn es ist nur für den Dateizugriff und BOM.
Also muß es auch PB "wissen", daß es unterschiedliche Formate gibt.

Nur sind Unicode in PB SPEICHER ja wohl IMMER zwei Bytes. UTF-16 kann aber wohl mehr Bytes haben.
1. AMD Athlon II X2 250P,4GB-RAM,WinXP
2. Notebook,500mhz,128MB-RAM,WINXP
3. WHS 2003
Inet: 6Mbit Down/386Kbit Up,Flat
PB4.60
Messenger: Trillian
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: UTF-16LE-Zeichen

Beitrag von NicTheQuick »

UTF-16 hat immer 2 Bytes. Little oder Big Endian sagen nur aus in welcher Reihenfolge die beiden Bytes stehen müssen. Siehe dazu auch Wikipedia, da steht alles: https://de.wikipedia.org/wiki/UTF-16
Bild
Demivec
Beiträge: 49
Registriert: 22.02.2008 20:49
Wohnort: Utah, USA

Re: UTF-16LE-Zeichen

Beitrag von Demivec »

UTF-16, UTF-16 LE, UTF-16 BE: haben entweder 2 oder 4 Bytes (für Surrogate).

Unicode and PureBasic
Bild
Antworten