Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > de.comp.lang.python > #6187
| From | "Wolli Buechel" <wjb131@web.de> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | [Python-de] Re: Fwd: Codepage-Methode und Basis 4096 |
| Date | 2024-08-11 20:36 +0000 |
| Message-ID | <172340856191.24690.7278656943094606510@mail.python.org> (permalink) |
| References | <B1E07CF5-53A8-41F2-A5A2-937180A3BD89@multi-matrix.de> |
Hallo Herr Schnoor,
danke für die Zusendung der Datei Codepage-univers.py.
Diese Datei enthält allerdings keine Berechnung von Bytes, weder eine fehlerhafte noch eine korrekte.
Die zuvor übersandte Datei keyboard-coding-asia.py enthält jedoch eine solche Berechnung.
Dort wird die Anzahl der Bytes eines Strings mittels der Funktion unit() bestimmt, und zwar so:
def unit(digit): # --------------------- Analyse der Anzahl <bits> ---------------------
# digit = Ordnungszahl ord(ch) eines UTF8-Zeichens ch (Einfügung von mir, WB)
if digit < 256:
byte = 1
elif digit > 256 and digit < 65536:
byte = 2
elif digit > 65535 and digit <16777215:
byte = 3
elif digit > 16777215:
byte = 4
return byte
Wie dieser Python-Coder verrät, sind – oder waren – Sie offenbar davon überzeugt, dass für die Codierung der Codepoint-Nummer eines UTF8-Zeichens für jedes der möglichen 1/2/3/4 Bytes alle 8 Bit eines Bytes zur Verfügung stehen. (Für 1 Byte 2**8 = 256 Bit, für 2 Byte 2**16 = 65536 Bit, etc.)
Dies ist jedoch nicht der Fall. Denn die Bytes enthalten – zusätzlich zur Codepoint-Nummer – noch einen Geheimcode (den Sie als Experte für Codierung – unbegreiflicherweise – nicht zu kennen scheinen).
Dieser Geheimcode ist eine Markierung dafür, aus wie vielen Byte ein Zeichen besteht.
Bei einem Ein-Byte-Zeichen beginnt dieses Solo-Byte mit einem 0-Bit.
Ein Mehr-Byte-Zeichen besteht logischerweise aus einer Gruppe zusammengehöriger Bytes,
einem sogenannten Start-Byte und ein oder mehreren Folge-Bytes:
Das Start-Byte beginnt mit einer Folge von 1-Bits, deren Anzahl gleich der Anzahl der Folge-Bytes entspricht (11, 111, 1111 = 2,3,4 Folge-Bytes).
In der folgenden Tabelle sind die Intervalle der Ordnungszahlen für 1/2/3/4 Bytes
sowie die geheime Bit-Struktur des Codes dargestellt ( vgl. https://en.wikipedia.org/wiki/UTF-8#Encoding ):
Code point ↔ UTF-8 conversion
First code point Last code point Byte 1 Byte 2 Byte 3 Byte 4
U+0000 U+007F 0xxxxxxx
U+0080 U+07FF 110xxxxx 10xxxxxx
U+0800 U+FFFF 1110xxxx 10xxxxxx 10xxxxxx
U+010000 U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Aufgrund der Ordnung der Intervalle nach Byte-Anzahlen kann man nun aus der Ordnungszahl ord(ch) eines UTF8-Zeichens ch leicht seine Byteanzahl berechnen, etwa mit folgender Python-Funktion:
def getNumBytes(ch):
"liefert die Anzahl der Bytes (1 bis 4) des UTF8-Zeichens ch via ord(ch)"
MaxUTF8 = 1114111
point = ord(ch)
if point in range(0, 2**7): return 1
elif point in range(2**8, 2**11): return 2
elif point in range(2**11, 2**16): return 3
elif point in range(2**16, 1 + MaxUTF8): return 4
Dieser Geheimcode ist doch clever gemacht von den Entwicklern der UTF8-Codierung der Unicode-Zeichen, oder?
W. Büchel
Back to de.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
[Python-de] Re: Codepage-Methode und Basis 4096 "Wolli Buechel" <wjb131@web.de> - 2024-08-09 05:18 +0000
[Python-de] Fwd: Codepage-Methode und Basis 4096 Erich Schnoor <eschnoor@multi-matrix.de> - 2024-08-09 11:25 +0200
[Python-de] Re: Fwd: Codepage-Methode und Basis 4096 "Wolli Buechel" <wjb131@web.de> - 2024-08-09 17:50 +0000
[Python-de] Fwd: Codepage-Methode und Basis 4096 Erich Schnoor <eschnoor@multi-matrix.de> - 2024-08-09 21:52 +0200
[Python-de] Re: Fwd: Codepage-Methode und Basis 4096 "Wolli Buechel" <wjb131@web.de> - 2024-08-10 08:25 +0000
[Python-de] Fwd: Codepage-Methode und Basis 4096 Erich Schnoor <eschnoor@multi-matrix.de> - 2024-08-10 11:48 +0200
[Python-de] Re: Fwd: Codepage-Methode und Basis 4096 "Wolli Buechel" <wjb131@web.de> - 2024-08-13 09:28 +0000
[Python-de] Re: Fwd: Codepage-Methode und Basis 4096 "Wolli Buechel" <wjb131@web.de> - 2024-08-10 16:36 +0000
[Python-de] Fwd: Codepage-Methode und Basis 4096 Erich Schnoor <eschnoor@multi-matrix.de> - 2024-08-11 11:44 +0200
[Python-de] Re: Fwd: Codepage-Methode und Basis 4096 "Wolli Buechel" <wjb131@web.de> - 2024-08-11 15:22 +0000
[Python-de] Fwd: Codepage-Methode und Basis 4096 Erich Schnoor <eschnoor@multi-matrix.de> - 2024-08-11 19:06 +0200
[Python-de] Re: Fwd: Codepage-Methode und Basis 4096 "Wolli Buechel" <wjb131@web.de> - 2024-08-11 20:36 +0000
[Python-de] Re: Fwd: Codepage-Methode und Basis 4096 "Wolli Buechel" <wjb131@web.de> - 2024-08-11 20:40 +0000
csiph-web