Python3 hat aber keine "encodierten Strings" mehr. Es hat eben nur Unicode-Strings. Encodierte "Strings" - ähnlich zu den normalen Strings in Python 2 - sind Bytes! Umcodieren geht also immer so: Bytes →(decode)→ String →(encode)→ Bytes. Wenn bräuchtest Du eine Methode auf Bytes, die den Zwischenschritt in Strings "verschleiert", also in etwa so:snafu hat geschrieben:Es geht darum, einen Python-String mit Encoding A in einen Python-String mit Encoding B umzuwandeln. Das ist ja auch Thema dieses Threads, oder nicht?
Code: Alles auswählen
def recode(bytes_, source, destination):
return bytes_.decode(source).encode(destination)
text = "Döner macht schöner‽"
# nehmen wir an, wie haben Daten in UTF-16:
origin = text.encode("utf16")
# die wollen wir in UTF-8 wandeln:
recode(ursprung, "utf16", "utf8")
> b'D\xc3\xb6ner macht sch\xc3\xb6ner\xe2\x80\xbd'
Viel sinnvoller wäre imho ein (optionaler) Parameter bei der ``print``-Methode zur Angabe des Zielencodings! Und natürlich ein fixes Default-Encoding, statt dieses System abhängigen Unsinns.