Форум сайта python.su
например есть файл(“test1.txt”) в кодировке ibm866 надо перевести его в UTF-8
fr = open("test1.txt", "rb")
s = fr.read(1000)
fr.close()
s = s.decode("IBM866") # - подскажите тут функцию
fw = open("test2.txt", "wb")
fw.write(s)
fw.close()
Офлайн
всмысле есть ли стандартная функция перекодировки из одной кодовой страницы в другую?
Офлайн
Что за кодировка IBM866? Может быть cp866?
text.decode('cp866').encode('utf-8')
P.S. Научитись пользоваться поиском, хотябы по форуму.
Офлайн
оп, спасибо эт то что надо, а можно без перевода в текущю кодировку(decode('cp866')) ? а сразу encode('utf-8') тока с указанием из какой кодировки
а то так получается, как я понял, что текст прогоняется по 2 раза, сначала из ‘cp866’ в кодировку по умолчанию а потом из неё в ‘utf-8’
жестко както..
Офлайн
после нескольких запусков заметил что конвертация из utf-8 слетает,
при конвертации из utf-8 в cp1251 файлов вот такого содержания:
почему?например в этом скрипте:
Ї®зҐ¬г?
зачто!?
fr = open("test1.txt", "rb")
s = fr.read(1000)
fr.close()
s = s.decode("utf-8") # в этой строке встает и выдает: UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2: invalid data
s = s.encode("cp1251")
fw = open("test2.txt", "wb")
fw.write(s)
fw.close()
Отредактировано (Июнь 13, 2010 22:08:17)
Офлайн
храни все в utf-8, это самая правильная кодировка
Офлайн
o7412369815963отличный совет,
храни все в utf-8, это самая правильная кодировка
Офлайн
zloyGamer
и я практически уверен что есть какаянить адекватная ф-я для обработки таких случаев, но гугл её скрывает, если кто знает подскажите
try:
s = s.decode("utf-8")
s = s.encode("cp1251")
except UnicodeDecodeError:
# кодировка значит не утф 8
pass
Офлайн
zloyGamerВсе есть, не надо что то утверждать, если ты этого не знаешь.
а в питоне даже нет ф-ии которая могла бы перевести просто хотябы те данные которые соответствуют utf-8 в cp1251
Офлайн
Здравствуйте. У меня по всей видимости, похожая проблема, только какая-то странная.
В одном месте русский текст считанный из ини-файла выводится нормально, а в другом игра крашится.
В чём различие никак не пойму.
slot = ui.interact()
ui.at(downright)
ui.frame(style='workshop_button')
if eva.__dict__[slot]:
ui.text("{=txt}Экипировано:\n%s"%eva.__dict__[slot].id) <--- тут слетает если писать name (кириллица), а не id(латиница)
else:
ui.text("{=txt}Экипировано:\nНичего")
ui.at(upright)
ui.vbox()
for key in weapon:
wp = weapon[key]
#if wp.slot is slot:
ui.textbutton("{=txt}%s"%wp.name,ui.returns(wp.id),style='workshop_button') <--- тут тот же самый name выводится нормально.
ui.textbutton("{=txt}Ничего",ui.returns(None),style='workshop_button')
ui.close()
result = ui.interact()
#if weapon.has_key(result):
eva.__dict__[slot] = weapon[result].copy()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1: ordinal not in range(128)
Офлайн