Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 13, 2012 23:49:31

369_sfera_963
Зарегистрирован: 2012-08-29
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно перекодировать файл из одной кодировки в другую.

Привет!

При попытке чтения файла вылетает ошибка:
'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'))

Если есть другое решение данной проблемы, буду рад услышать ваши советы.
Если же нет, то помогите довести до ума мою идею…

Использую Python v3.2

Офлайн

#2 Сен. 14, 2012 03:28:00

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Нужно перекодировать файл из одной кодировки в другую.

369_sfera_963
Использую Python v3.2
в open() есть параметр encoding

чтобы перекодировать, нужно исходный файл открыть на чтение “r” в его кодировке, а файл назначения открыть на запись “w” в нужной кодировке



Офлайн

#3 Сен. 14, 2012 19:15:35

369_sfera_963
Зарегистрирован: 2012-08-29
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно перекодировать файл из одной кодировки в другую.

py.user.next
369_sfera_963
Использую Python v3.2
в open() есть параметр encoding

чтобы перекодировать, нужно исходный файл открыть на чтение “r” в его кодировке, а файл назначения открыть на запись “w” в нужной кодировке

Вы имеете ввиду модуль codecs?

А как можно определить исходую кодировку файла?

Офлайн

#4 Сен. 14, 2012 21:34:34

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Нужно перекодировать файл из одной кодировки в другую.

369_sfera_963
Вы имеете ввиду модуль codecs?
Это в ветке питона 2.x используется codecs
369_sfera_963
А как можно определить исходую кодировку файла?
По симпатичности результата перекодирования. В общем случае исходную кодировку установить невозможно.



Офлайн

#5 Сен. 14, 2012 22:49:38

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Нужно перекодировать файл из одной кодировки в другую.

doza_and
По симпатичности результата перекодирования. В общем случае исходную кодировку установить невозможно.
http://pypi.python.org/pypi/chardet не панацея, но все же…



Офлайн

#6 Сен. 15, 2012 06:07:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Нужно перекодировать файл из одной кодировки в другую.

>>> 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]$



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version