Python - kodowanie UTF-8

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:

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

Dane wczytuje poprzez:

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

slowo.decode("utf-8")

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1