UTF-8 Kodierung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Alak
User
Beiträge: 2
Registriert: Donnerstag 19. November 2009, 07:42

Ich habe folgendes (wahrscheinlich simple) Problem:

Ich bräuchte zu einem String die UTF-8 Kodierung in hexadezimal.

Code: Alles auswählen

>>> s='äü'
>>> s.encode('utf8')
b'\xc3\xa4\xc3\xbc'
So weit so gut, aber

Code: Alles auswählen

>>> s='y'
>>> s.encode('utf8')
b'y'
Sollte das nicht eigentlich b'\x79' sein? Gibt es eine Möglichkeit, wie auch ASCII-Zeichen hexadezimal dargestellt werden?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo Alak, willkommen im Forum:

Code: Alles auswählen

hex(ord('y'))
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Alak hat geschrieben:Sollte das nicht eigentlich b'\x79' sein?
Nö. Die Entwickler von Python haben sich dafür entschieden, alle druckbaren Zeichen - was der guten alten C-Definition nach alles zwischen ASCII 32 und ASCII 126 ist - direkt darzustellen.

Hättest du Python 2.6, ginge `"Hallo".encode("utf8").encode("hex")`

Ah, in Python 3 funktioniert `import binascii; binascii.hexlify(b"b")`.

Stefan
Antworten