Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #6187
| Path | csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | "Wolli Buechel" <wjb131@web.de> |
| Newsgroups | de.comp.lang.python |
| Subject | [Python-de] Re: Fwd: Codepage-Methode und Basis 4096 |
| Date | Sun, 11 Aug 2024 20:36:01 -0000 |
| Lines | 53 |
| Message-ID | <172340856191.24690.7278656943094606510@mail.python.org> (permalink) |
| References | <B1E07CF5-53A8-41F2-A5A2-937180A3BD89@multi-matrix.de> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset="utf-8" |
| Content-Transfer-Encoding | 8bit |
| X-Trace | news.uni-berlin.de rpIRw8Fr5/IUTWXEwhgpHAIF10AbWhUFwH+Z7bHXClhA== |
| Cancel-Lock | sha1:6lzMHRU4uxYlXOIHZzKB3o3Bj1A= sha256:0tWhbYX8c1F7SztL+DAEHB8KVAUMcrKjNTubJUJm5pQ= |
| Authentication-Results | mail.python.org; dkim=none reason="no signature"; dkim-adsp=none (unprotected policy); dkim-atps=neutral |
| In-Reply-To | <B1E07CF5-53A8-41F2-A5A2-937180A3BD89@multi-matrix.de> |
| User-Agent | HyperKitty on https://mail.python.org/ |
| Message-ID-Hash | HT7OKGILEKGDUNAEHEX6OHKXD7NTZIRP |
| X-Message-ID-Hash | HT7OKGILEKGDUNAEHEX6OHKXD7NTZIRP |
| X-MailFrom | wjb131@web.de |
| X-Mailman-Rule-Misses | dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-python-de.python.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header |
| X-Mailman-Version | 3.3.10b1 |
| Precedence | list |
| List-Id | Die Deutsche Python Mailingliste <python-de.python.org> |
| Archived-At | <https://mail.python.org/archives/list/python-de@python.org/message/HT7OKGILEKGDUNAEHEX6OHKXD7NTZIRP/> |
| List-Archive | <https://mail.python.org/archives/list/python-de@python.org/> |
| List-Help | <mailto:python-de-request@python.org?subject=help> |
| List-Owner | <mailto:python-de-owner@python.org> |
| List-Post | <mailto:python-de@python.org> |
| List-Subscribe | <mailto:python-de-join@python.org> |
| List-Unsubscribe | <mailto:python-de-leave@python.org> |
| Xref | csiph.com de.comp.lang.python:6187 |
Show key headers only | View raw
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