Unicode-Anleitung · Aktualisiert am 20. Oktober 2026
Unicode in Python
Verarbeite Text als str. Kodiere ihn für Speicherung und Übertragung in bytes und dekodiere mit der bekannten Quellkodierung. Führe die folgenden Beispiele mit Python 3 aus.
Codepunkte mit ord() und chr() ermitteln
Python 3 stellt Unicode-Text als str dar. ord() nimmt einen Codepunkt und liefert eine Ganzzahl; chr() kehrt dies um. Ein sichtbares Emoji kann mehrere Codepunkte enthalten.
text = "Aé♥"
print([f"U+{ord(char):04X}" for char in text])
# ['U+0041', 'U+00E9', 'U+2665']
print(chr(0x2665))
# ♥Mit UTF-8 Zeichenfolgen kodieren und Bytes dekodieren
encode() wandelt Text in Bytes um, decode() Bytes in Text. Verwende die tatsächliche Quellkodierung. Ungültige Eingaben lösen standardmäßig einen Fehler aus.
text = "café"
data = text.encode("utf-8")
print(data.hex(" "))
# 63 61 66 c3 a9
print(data.decode("utf-8"))
# café
assert data.decode("utf-8") == textEscape-Schreibweise von wörtlichem Text unterscheiden
Python interpretiert Unicode-Escapes in normalen Zeichenfolgen. Raw-Strings behalten die Backslashes. Ein Escape in der Darstellung bedeutet nicht unbedingt, dass der gespeicherte Text einen Backslash enthält.
heart = "\u2665"
literal = r"\u2665"
print(heart, len(heart))
# ♥ 1
print(literal, len(literal))
# \u2665 6
assert heart == "♥"Gleichwertigen Text vor Vergleichen normalisieren
Ein zusammengesetztes Zeichen und ein Buchstabe mit kombinierendem Zeichen können gleich aussehen. NFC vereinheitlicht kanonisch gleichwertige Folgen. Es übersetzt nicht und entfernt keine Akzente.
import unicodedata
composed = "é"
decomposed = "e\u0301"
print(composed == decomposed)
# False
print(unicodedata.normalize("NFC", decomposed) == composed)
# TrueHäufige Kodierungsfehler vermeiden
- Gib encoding="utf-8" für UTF-8-Dateien an und prüfe bei älteren Dokumenten die Quellkodierung.
- Nutze errors="ignore" nicht als allgemeine Reparatur: Daten gehen still verloren. Behandle Fehler ausdrücklich.
- len() zählt Codepunkte in str, nicht sichtbare Zeichen. Kombinierende Zeichen und Emoji können mehrere Codepunkte haben.
- ASCII kann nicht alle Unicode-Zeichen kodieren. Ersetzung und Transliteration verändern den Inhalt.