Encoding einen string zu ascii
Habe ich eine lange Zeichenfolge, die ich verschlüsseln will, auf ascii. Ich bin dabei:
s = s.encode('ascii', 'replace')
aber ich bekommen:
'ascii' codec can't decode byte 0xc3 in position 2646: ordinal not in range(128)
(Ich habe auch versucht 'ignore'
aber es hilft nicht.)
Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr string ist bereits codiert mit einigen Kodierung. Vor der Codierung ist es ascii, Sie muss Sie entschlüsseln ersten.
Python ist implicity versuchen, Sie zu entschlüsseln (Das ist, warum Sie bekommen eine
UnicodeDecodeError
nichtUnicodeEncodeError
).Können Sie das problem lösen, indem ausdrücklich Decodierung dein bytestring (mit der entsprechenden Codierung) vor versuchen, es neu codieren zu ascii.
Beispiel:
Verwenden Sie die korrekte Kodierung der string codiert in den ersten Platz, statt
'some_encoding'
.Müssen Sie wissen, welche Kodierung einer Zeichenfolge verwenden, bevor Sie Sie entschlüsseln kann. Wo hast du den string aus?
encode
sollte verwendet werdenunicode
- Objekte zu konvertieren, um einstr
.Wenn du ein str-Objekt verwenden, sollten Sie
decode
zu konvertieren, um einunicode
.