Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/88: Рейтинг темы: голосов - 88, средняя оценка - 4.84
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151

Кракозябры при чтении исключения, выводящего русский текст ошибки Windows

29.08.2019, 16:04. Показов 17729. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python 2.7 (обязательно)
Python
1
2
3
4
5
import os
try:
    os.remove('C:/swapfile.sys')
except Exception as e:
    print(e)
Выводит
Code
1
[Error 32] ������� �� ����� �������� ������ � �����,: 'C:/swapfile.sys'
А надо
Code
1
[Error 32] Процесс не может получить доступ к файлу, так как этот файл занят другим процессом: 'C:/swapfile.sys'
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.08.2019, 16:04
Ответы с готовыми решениями:

Кракозябры при выполнении bat-файла c командами, содержащими русский текст
Здравствуйте, возникает ошибка при запуске bat файл c русским текстом. chcp 1251 не помогает. chcp 1251 "C:\Program...

Кракозябры при чтении файла
Почему при чтении файла вылазят непонятные символы? Сохранить в файл надо русские символы. #include<iostream> ...

Кракозябры при чтении письма
Доброго времени суток. Пробую читать письма с почты. Делаю так: $mbox = imap_open($authhost, $user, $pass); echo...

7
5025 / 1054 / 147
Регистрация: 29.01.2013
Сообщений: 6,182
29.08.2019, 16:07
FreakMurderer, изучите работу с кодировками в строках в Python 2.7
0
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
29.08.2019, 16:30  [ТС]
Что мне сделать с е переменной ?

Добавлено через 11 минут
Неправильно выводит в UTF консоль
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.08.2019, 17:04
Цитата Сообщение от FreakMurderer Посмотреть сообщение
Неправильно выводит в UTF консоль
Кто тебе сказал, что консоль - UTF-8?
В windows кодировка консоли по умолчанию - OEM866.

Добавлено через 33 секунды
Цитата Сообщение от FreakMurderer Посмотреть сообщение
Что мне сделать с е переменной ?
Ничего. Переключи кодировку консоли на 1251. Надеюсь, знаешь как.
0
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
29.08.2019, 17:33  [ТС]
Garry Galler,
мне сказал PyCharm , и в другой консоли команда chcp 65001 сказала , тыкало !

Ничего. Переключи кодировку консоли на 1251. Надеюсь, знаешь как.
Мозги свои переключи.
Я же сказал - работаю в УТФ КОНСОЛИ

Добавлено через 23 минуты
Заработало
Python
1
print(str(e).decode('cp1251').encode('utf-8'))
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.08.2019, 17:53
Цитата Сообщение от FreakMurderer Посмотреть сообщение
Заработало
Этот же результат дает простое переключение кодировки:
Python
1
os.system('chcp 1251>nul')
0
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
29.08.2019, 18:19  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# coding=utf-8
import os
 
try:
    os.remove('C:/swapfile.sys')
except Exception as e:
    # print(str(e).decode('cp1251').encode('utf-8'))
    os.system('chcp 1251>nul')
    print(str(e))
 
print("А теперь UTF текст")
print("UPS !!!")
os.system('chcp 65001>nul')
print("Какые мы умные, нам не влом еще стопятсотый раз  сделаьт os.system('chcp 1251>nul') настрать, что консоль могут юзать другие приложения")
Code
1
2
3
4
5
6
7
8
9
10
C:\Users\user>chcp 65001
Active code page: 65001
 
python.exe test.py
[Error 32] Процесс не может получить доступ к файлу,: 'C:/swapfile.sys'
А теперь UTF текст
UPS !!!
Какые мы умные, нам не влом еще стопятсотый раз  сделаьт os.system('chcp 1251>nul') настрать, что консоль могут юзать другие приложения
 
C:\Users\user>
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.08.2019, 23:13
FreakMurderer, Убийца кракозябр, что ты скажешь на это?

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\Users\Garry>chcp 65001
Active code page: 65001
 
C:\Users\Garry>py -2.7 D:\INSTALL\Python3\PROJECTS\SCRIPTS\pagesys.py
[Error 32] Процесс не может получить доступ к файлу,: 'C:/pagefile.sys'
Traceback (most recent call last):
  File "D:\INSTALL\Python3\PROJECTS\SCRIPTS\pagesys.py", line 6, in <module>
    sys.stdout.write(str(e).decode("cp1251").encode('utf-8') + "\n")
IOError: [Errno 0] Error
 
C:\Users\Garry>py -2.7 D:\INSTALL\Python3\PROJECTS\SCRIPTS\pagesys.py
[Error 32] Процесс не может получить доступ к файлу,: 'C:/pagefile.sys'Traceback (most recent call last):
  File "D:\INSTALL\Python3\PROJECTS\SCRIPTS\pagesys.py", line 6, in <module>
    print(str(e).decode("cp1251").encode('utf-8'))
IOError: [Errno 2] No such file or directory
Декодирование строки из кодировки 1251 в utf-8 и попытка последующей записи перекодированных данных в консоль cmd, которая переключена на кодировку 65001 вызывает дополнительную ошибку (что это за ошибка я тебе рассказывать не буду - бесполезно).

Напомню, в реальной жизни программы работают не с консолью PyCharm, а с консолью ОС.
В случае windows это консоль cmd и ее кодировка по умолчанию для русской локализации - 866.
И у этой консоли очень сложные взаимоотношения с UTF-8 и юникодом вообще.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> # первый случай когда консоль запускается с кодировкой по умолчанию
>>> import os
>>> os.system('chcp')
Текущая кодовая страница: 866
0
>>> try:
...     os.remove('C:/pagefile.sys')
... except Exception as e:
...     print(str(e).decode("cp1251").encode('utf-8'))
...
[Error 32] ╨Я╤А╨╛╤Ж╨╡╤Б╤Б ╨╜╨╡ ╨╝╨╛╨╢╨╡╤В ╨┐╨╛╨╗╤Г╤З╨╕╤В╤М ╨┤╨╛╤Б╤В╤Г╨┐ ╨║ ╤Д╨░╨╣╨╗╤Г,: 'C:/pagefile.sys'
>>> # получаем неправильно кодированное сообщение
>>>
>>> # теперь случай, когда консоль cmd работает в режиме utf-8
>>> os.system("chcp 65001")
Active code page: 65001
0
>>> try:
...     os.remove('C:/pagefile.sys')
... except Exception as e:
...     print(str(e).decode("cp1251").encode('utf-8'))
...
[Error 32] Процесс не может получить доступ к файлу,: 'C:/pagefile.sys'Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
IOError: [Errno 32] Broken pipe
>>> # это новая ошибка, которую вызывает строка с декодированием - [Errno 32] Broken pipe
 
>>> # третий случай, когда мы просто переключаем кодировку консоли - все работает
>>> os.system('chcp 1251')
Текущая кодовая страница: 1251
0
>>> try:
...     os.remove('C:/pagefile.sys')
... except Exception as e:
...     print(e)
...
[Error 32] Процесс не может получить доступ к файлу,: 'C:/pagefile.sys'
>>>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.08.2019, 23:13
Помогаю со студенческими работами здесь

Кракозябры при чтении из файла
При чтении из файла .txt и вывода на консоль русские буквы отображаются как знаки вопроса. Как это исправить? Читаю с помощью...

Почти кракозябры при чтении файла
При чтении файла вместо русских букв выводятся знаки вопроса Фрагмент кода using System; using System.Net.Mail; // отправка...

Кракозябры в переменной при чтении файла
Как сделать, чтобы в режиме отладки VS отображал мне текст переменной в формате UTF-8, а не вот это вот?

Кракозябры при чтении русского текста из файла на C++, как исправить?
SetConsoleCP(1251); SetConsoleOutputCP(1251); setlocale(LC_ALL, &quot;Rus&quot;); - Это не работает

Обработка исключения при чтении недоступной памяти
Помогите пожалуйста, как правильно обработать исключение. try{ __asm{ xor eax,eax mov ,eax } } ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru