Найти - Пользователи
Полная версия: Проблемы с кодировкой файлов
Начало » Python для новичков » Проблемы с кодировкой файлов
1
VasCraft
Доброго времени суток. Тут возникла проблема, выбивающая из колеи напрочь. Суть проблемы в том, что имеется файл с КИРИЛЛИЧЕСКИМИ символами в кодировке Ansi, чтение которого осуществляется без проблем в принципе. Проблема состоит в записи файла! Файл либо не записывается, либо записывается, но при дальнейшем чтении читаемое предствляет безсмысленный набор закодированных символов.

Данная проблема мне весь мозг выела, поэтому ничего не понимаю. Если возможно, предложите выход из данной ситуации.

P.S. Суть да дело, насколько я понимаю, файл сохранятся в кодировке utf8, можете ли предложить либо корректный способ его сохранения в других кодировках(ANSI), либо сразу же перед записью кодировать записываемые строки в ‘нормальный вид’ для последующего нормального чтения. Или же лучше не менять кодировку файла, а просто записывать в него киррилические символы? Последнее мне наиболее предпочтительно.

Помогите, пожалуйста, реально это проблема сейчас для меня!
truporez
Было-бы неплохо увидеть как Вы открываете файл. Возможно для работы подойдёт функция open из модуля codecs.
VasCraft
truporez
Было-бы неплохо увидеть как Вы открываете файл. Возможно для работы подойдёт функция open из модуля codecs.
Хорошо, покажу код:

def OnSave(self,e):
dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.SAVE | wx.OVERWRITE_PROMPT)
if dlg.ShowModal() == wx.ID_OK:
itcontains = self.control.GetValue()

self.filename=dlg.GetFilename()
self.dirname=dlg.GetDirectory()
filehandle=open(os.path.join(self.dirname, self.filename),'w')
filehandle.write(itcontains.encode('utf-8'))
filehandle.close()
dlg.Destroy()
Это код - выдержка из редактора текстовых файлов. Собственно в нем и весь сыр-бор.

P.S. ВНЕЗАПНО пришла идея заменить в строчку

filehandle.write(itcontains.encode('utf-8'))
на
filehandle.write(itcontains.encode('cp1251'))
Протестирую - отпишусь. Если есть мысли - высказывайте
VasCraft
Предложенный мной метод помог решить данную проблему. Теперь при открытии любого из файлов их содержимое отображается вполне корректными кириллическими символами, так что проблема решена. Спасибо за внимание!
truporez
Чем хорош codecs.open так это тем, что вы задали раз кодировку при открытии и далее используете просто read/write без трюков с encode. Но он годиться только если кодировка файла изначально известна.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB