Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107

UnicodeDecodeError в текстовом редакторе. Как прочитать любой текстовый файл?

01.10.2022, 18:22. Показов 545. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Я создаю текстовый редактор, но когда я открываю некоторые файлы, я получаю UnicodeDecodeError. Например:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 49: invalid continuation byte.
Мой метод открытия:
Python
1
2
3
4
5
6
7
8
9
10
def OnOpen(self, e):
    self.dirname = ''
    dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.FD_OPEN)
    if dlg.ShowModal() == wx.ID_OK:
        self.filename = dlg.GetFilename()
        self.dirname = dlg.GetDirectory()
        f = open(os.path.join(self.dirname, self.filename), 'r', encoding="utf8")
        self.control.SetValue(f.read())
        f.close()
    dlg.Destroy()
Я пробовал использовать:
Python
1
f = open(os.path.join(self.dirname, self.filename), 'rb')
Не помогает.
Может ли кто-нибудь предложить решение? Как я могу открыть любой текстовый документ, документ Word и другие документы без ошибок?
Следует отметить, что пользователь может открывать разные типы, и это должно отображаться корректно.
Заранее благодарен!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2022, 18:22
Ответы с готовыми решениями:

Создать текстовый файл в текстовом редакторе
создать текстовый файл в текстовом редакторе. Организовать просмотр содержимого файла и выполнения действий в соответствии с условием...

В текстовом редакторе создать текстовый файл, состоящий не менее чем из двух четверостиший. Изменить файл в соответствии
Записать в конецфайла все слова, имеющие длину, большую или равную максимальной длине, максимальную длину считать с клавиатуры

Как отредактировать файл специального формата в текстовом редакторе или редакторе кодов?
Привет специалистам! Я - программист СУБД и не могу решить указанную задачу. Как отредактировать файл специального формата (XLS,...

10
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
01.10.2022, 18:43
jonikster, не зная кодировку -никак, точно также это не могут сделать и любые редакторы, они пытаются определить кодировку и если не получается то показывают в одной из популярных кодировок. УТФ-8 не единственная, хотя и крутая, у винды 1251, а есть еще всяки коир и прочие.

Добавлено через 38 секунд
ты можешь перехватывать исключение и предлагать юзеру выбрать кодировку или пытаться показать например как байты.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
01.10.2022, 20:43  [ТС]
Welemir1, Как я знаю, есть библиотеки для определения кодировки, но как это лучше реализовать?
Быть может, можно преобразовывать все файлы к одной кодировке, но как?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
01.10.2022, 21:04
jonikster, к какой кодировке? нет универсальной то, потому их тако зоопарк, УТФ-8 конечно рулит но вовсе не указ например винде.
Все файлы это просто байты, можешь их интерпретировать как хочешь. Или можешь начать с обдумывания того с какими кодировками твой редактор гарантирует работу.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
01.10.2022, 23:24  [ТС]
Welemir1, Я имею ввиду, преобразовать любой файл, вне зависимости от его кодировки, в конкретную кодировку
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
02.10.2022, 09:31
jonikster, начинаем все сначала. Чтобы преобразовать файл из любой кодировки в твою, ты должен ЗНАТЬ кодировку файла.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
02.10.2022, 19:32  [ТС]
Welemir1, Просто как я помню, на других яп может быть проще. В C# такой проблемы вообще не было.
И я уверен, что не единственный, кто сталкивается с этим...
0
0 / 0 / 0
Регистрация: 11.06.2022
Сообщений: 38
02.10.2022, 19:49
Используйте codecs, и укажите при открытии errors = "ignore"
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
02.10.2022, 19:50
Цитата Сообщение от jonikster Посмотреть сообщение
В C# такой проблемы вообще не было.
ты ошибаешься, просто тебе везло с кодировкой. Да ты не первый сталкиваешься, потому и рекомендуют использовать утф-8 и пишут определители кодировок. Магии никакой нет. Это никак не зависит от ЯП или ОС.
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
02.10.2022, 20:14
Цитата Сообщение от jonikster Посмотреть сообщение
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 49: invalid continuation byte.
Насколько я помню, такое возникает, когда кодировка utf-8 с BOM. Нужно установить encoding='utf_8_sig'
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
03.10.2022, 04:25  [ТС]
Вот решение, ребята!
Python
1
2
3
4
5
6
7
8
9
10
            detector = UniversalDetector()
            for line in open(os.path.join(self.dirname, self.filename), 'rb'):
                detector.feed(line)
                if detector.done: break
            detector.close()
            self.encoding = detector.result['encoding']
            f = open(os.path.join(self.dirname, self.filename), 'r', encoding=detector.result['encoding'], errors='ignore')
            self.control.SetValue(f.read())
            f.close()
        dlg.Destroy()
Chardet.
Поглядел, как открывать Word документы, RTF и FB2...
Пока заморачиваться не стану.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2022, 04:25
Помогаю со студенческими работами здесь

Создать текстовый файл в любом текстовом редакторе. Выполнить его обработку по указанному заданию.
Разработайте программу, которая осуществляет «выравнивание по ширине» строк. Выравнивание должно выполняться таким образом, чтобы...

Создать текстовый файл в текстовом редакторе. Организовать просмотр содержимого и выполнения действий в соответствии с
Дано файл ф, компоненты которого являются целыми числами. Найти количество четных чисел среди компонентов. Добавлено через 2 минуты ...

Как сделать чтоб файл в текстовом редакторе не сохранялся если он пустой
как сделать чтоб файл в текстовыом редакторе не сохранялся если он пустой???????????

разработать программу, которая преобразует любой текстовый файл в другой текстовый файл
Следует разработать программу, которая преобразует любой текстовый файл в другой текстовый файл так чтобы в каждой строке каждое слово,...

Переписать первый текстовый файл во второй текстовый файл, удалив слова, указанные в третьем текстовом файле
помогите пожалуйста! Файл input.txt содержит несколько строк текста. Слова в тексте могут разделяться пробелами и знаками препинания....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru