Mam problem z kodowaniem w Pythonie. Próbowałem różnych metod, ale nie mogę znaleźć najlepszego sposobu na zakodowanie mojego wyjścia do UTF-8.
Oto, co próbuję zrobić:
result = unicode(google.searchGoogle(param), "utf-8").encode("utf-8")
searchGoogle
zwraca pierwszy wynik Google dla zapytania param
.
Oto błąd, który otrzymuję:
exceptions.TypeError: decoding Unicode is not supported
Czy ktoś wie, jak mogę sprawić, by Python zakodował moje dane wyjściowe w UTF-8, aby uniknąć tego błędu?
python
encoding
utf-8
character-encoding
simonbs
źródło
źródło
unicode()
prostu wygłupiałem się, próbując zrozumieć, co się dzieje. Dziękuję bardzo :-)ascii' codec can't decode byte 0xc3 in position
. Czy wiesz, dlaczego tak jest?.encode()
tego powoduje, że Python próbuje najpierw przekonwertować na Unicode (używając kodowania ascii). Nie wiem, dlaczego funkcja searchGoogle () czasami zwracała kod Unicode, a czasami ciąg znaków. Może to zależy od tego, co mu oddaszparam
? Staraj się trzymać jednego typu.def uors2u(object, encoding=..., errors=...)
która zwróciobject
niezmieniony parametr, jeśli jest już w Unicode, lub przekonwertuje go, jeśli str. Jednak ten kod pachnie. Powinieneś konwertować wszystkie dane wejściowe do Unicode, gdy tylko otrzymasz je z zewnątrz (jak system plików) i przekonwertować je z powrotem, jeśli to konieczne, przed odesłaniem. Powinno być tylko jedno miejsce, w którym konwertujesz str na Unicode, więc funkcja pomocnicza, taka jak ta, którą opisałem, nie powinna być potrzebna.