2016-10-31 15 views
0

Angenommen, ich habe die folgende Zeichenfolge, die ich als UTF-8 entschlüsseln will:python3 dekodieren externer UTF8-String

str ='\\u00d7\\u0090\\u00d7\\u0090\\u00d7\\u0090' 
# expect 'אאא' 

mit Python 3, würde ich erwarten, dass die Arbeit folgen, aber es funktioniert nicht:

bytes(str, 'ascii').decode('unicode-escape') 
# prints '×××' 
bytes(str, 'ascii').decode('utf-8') 
# prints '\\u00d7\\u0090\\u00d7\\u0090\\u00d7\\u0090' 

Irgendwelche Hilfe?

Antwort

1

Sie können es mit mehreren Fahrten durch encode/decode tun.

print(st.encode('ascii').decode('unicode-escape').encode('iso-8859-1').decode('utf-8')) 

Die erste ist the preferred alternate to bytes. Die zweite konvertiert die Escape-Sequenzen in ihre entsprechenden Zeichen. Die dritte nutzt Unicode, basierend auf ISO-8859-1, für die ersten 256 Codepunkte, um diese Zeichen direkt zurück in Bytes umzuwandeln. Schließlich können Sie die UTF-8-Zeichenfolge dekodieren.