Kodek „ascii” nie może kodować znaku na pozycji * ord nie mieszczącej się w zakresie (128)
Istnieje kilka wątków na stackoverflow, ale nie mogłem znaleźć poprawnego rozwiązania problemu jako całości.
Zebrałem ogromne sumy danych tekstowych z funkcji odczytu urllib i zapisałem to samo w plikach pickle.
Teraz chcę zapisać te dane do pliku. Podczas pisania otrzymuję błędy podobne do -
'ascii' codec can't encode character u'\u2019' in position 16: ordinal not in range(128)
i wiele danych jest traconych.
Przypuszczam, że dane z odczytu urllib są danymi bajtowymi
próbowałem
1. text=text.decode('ascii','ignore')
2. s=filter(lambda x: x in string.printable, s)
3. text=u''+text
text=text.decode().encode('utf-8')
ale wciąż kończę się podobnymi błędami. Czy ktoś może wskazać właściwe rozwiązanie. A także kodery-dekodery działają. Nie mam problemów, jeśli bajty konfliktów nie są zapisywane w pliku jako łańcuch, dlatego utrata jest akceptowana.