Форум сайта python.su
0
Привет!
При попытке чтения файла вылетает ошибка:
'utf-8' codec can't decode byte 0xef in position 26…
Решение этой пробемы я вижу в следующем.
Есть ряд файлов, которые нужно привести к кодировке utf-8, чтобы выполнить дальнейшую работу.
Пробовал несколько вариантов (нашел их здесь, на форуме). Вот один из них:
f = open("utf8.txt", "wb") for line in open("cp1251.txt", "rb"): f.write(line.decode('utf8').encode('cp1251'))
Офлайн
857
369_sfera_963в open() есть параметр encoding
Использую Python v3.2
Офлайн
0
py.user.next369_sfera_963в open() есть параметр encoding
Использую Python v3.2
чтобы перекодировать, нужно исходный файл открыть на чтение “r” в его кодировке, а файл назначения открыть на запись “w” в нужной кодировке
Офлайн
253
369_sfera_963Это в ветке питона 2.x используется codecs
Вы имеете ввиду модуль codecs?
369_sfera_963По симпатичности результата перекодирования. В общем случае исходную кодировку установить невозможно.
А как можно определить исходую кодировку файла?
Офлайн
18
doza_andhttp://pypi.python.org/pypi/chardet не панацея, но все же…
По симпатичности результата перекодирования. В общем случае исходную кодировку установить невозможно.
Офлайн
857
>>> with open('file.txt', 'r', encoding='utf-8') as fin, \ ... open('output.txt', 'w', encoding='cp1251') as fout: ... fout.write(fin.read()) ... 6 >>>
[guest@localhost tmp]$ cat file.txt
абвг
[guest@localhost tmp]$ .hex file.txt
00000000 d0 b0 d0 b1 d0 b2 d0 b3 20 0a |........ .|
0000000a
[guest@localhost tmp]$ .hex output.txt
00000000 e0 e1 e2 e3 20 0a |.... .|
00000006
[guest@localhost tmp]$
Офлайн