Python - kodowanie UTF-8

Python - kodowanie UTF-8
SK
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 7 lat
  • Postów:80
0

Czesc,

Mam porblem z poprawnym wyswietlaniem polskich znakow w python. Plik txt, z ktorego chce wcytac liste slow, jest kodowany w ANSI.
W kodzie pythona, mam wpisana na poczatku polecenie:

Kopiuj
#-*- coding: utf-8 -*- 

Dane wczytuje poprzez:

Kopiuj
set_rzecz = set()
for wiersz in open('slowa.txt', 'r'):
    slowo = wiersz[:-1]
    set_rzecz.add(slowo.lower())

po wyswietleniu elementow zbioru set_rzecz pojawiaja sie np. ko�lawiej�cemu
Temat polskich znakow byl juz wielokrotnie walkowany. Probowalem robic przekodowanie na UTF-8, np. poprzez dodanie

Kopiuj
slowo.decode("utf-8")

ale pojawia sie blad UnicodeDecodeError: 'utf8' codec can't decode byte 0xf3 in position 6: unexpected end of data

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

o_O

  1. Czytaj https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
  2. Po pierwsze nie ma czegoś takiego jak "ANSI", szczególnie z punktu widzenia polskich znaków. Pewnie masz tam jakies Windows-1250 albo ISO-8859-2
  3. codecs.open(plik, mode, encoding) a nie takie czytanie na pałe
  4. Jak już chcesz na pałe czytać bajty to zastanów się co robisz. Decode oznacza że dane są w jakimś formacie i chcesz je rozpakować z tego formatu. Encode oznacza że chcesz zakodować bajty do jakiegoś wybranego kodowania. Żeby "przerobić na utf-8" to musiałbyś zrobić sobie "decode" z początkowego kodowania (np. to iso-8859-2) a potem "encode" na utf-8

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.