Piszę niektóre programy do przetwarzania poczty w Pythonie, które napotykają dziwne bajty w polach nagłówka. Podejrzewam, że to po prostu zniekształcona poczta; sama wiadomość twierdzi, że jest nas-ascii, więc nie sądzę, że istnieje prawdziwe kodowanie, ale chciałbym wydobyć ciąg znaków Unicode zbliżony do oryginalnego bez rzucania UnicodeDecodeError
.Czy istnieje funkcja biblioteki Python, która próbuje odgadnąć kodowanie znaków niektórych bajtów?
Poszukuję funkcji, która ma str
i opcjonalnie kilka podpowiedzi, a jej darndest daje mi z powrotem unicode
. Mógłbym oczywiście napisać, ale jeśli taka funkcja istnieje, autor prawdopodobnie pomyślał nieco głębiej o tym, jak najlepiej to osiągnąć.
Wiem również, że projekt Pythona preferuje jawne i niejawne oraz że standardowa biblioteka ma na celu uniknięcie ukrytej magii w dekodowaniu tekstu. Chcę tylko wyraźnie powiedzieć "śmiało i zgadnij".
Można pominąć przypadek "ascii" na końcu i po prostu użyć 'latin1', ponieważ' latin1' dekoduje wszystkie 256 bajtowe wartości bez błędu. –