Найти - Пользователи
Полная версия: Преобразование кракозябров в текст
Начало » Python для экспертов » Преобразование кракозябров в текст
1 2
Все ники заняты
ActivePython 2.5, WinXP
При исполнении консольных скриптов иногда на консоль (cmd.exe) выдаются ошибки кракозябрами, типа:
pywintypes.com_error: (-2147221020, ‘\xd1\xe8\xed\xf2\xe0\xea\xf1\xe8\xf7\xe5\xf1\xea\xe0\xff \xee\xf8\xe8\xe1\xea\xe0’, None, None)
Как это расшифровать (интересует способ, а не конкретный текст)?
slivlen
Перехвати исключение и выведи его текст.
try:
# some code goes here
except pywintypes.com_error, e:
    print e.message.decode('cp1251').encode('cp866')
Все ники заняты
Нет, так не получается. Например:
# -*- coding: cp1251 -*-
import pywintypes, win32com.client
try:
conn = win32com.client.Dispatch("какая-то глупость")
except pywintypes.com_error, e:
print e.message.decode('cp1251').encode('cp866')
Не выводит ничего. В то же время, если не обрабатывать ошибку, какие-то кракозябры выводятся (их то и хочется прочитать).
bialix
а у меня дает такую ошибку на сам print:

AttributeError: com_error instance has no attribute ‘message’
bialix
а вот так работает, правда у меня Python 2.4:


import pywintypes, win32com.client
try:
conn = win32com.client.Dispatch(“какая-то глупость”)
except pywintypes.com_error, e:
print e.decode('cp1251').encode('cp866')
slivlen
Посмотри пример обработки ошибок pywintypes.com_error здесь.
Все ники заняты
bialix
а вот так работает, правда у меня Python 2.4:


import pywintypes, win32com.client
try:
conn = win32com.client.Dispatch(“какая-то глупость”)
except pywintypes.com_error, e:
print e.decode('cp1251').encode('cp866')
Да, это реально работает :). Спасибо!
Все ники заняты
Что всё же означают такие кракозябры? Если это коды символов, то каких?
bialix
это CP1251 – дефолтная кодировка на русской винде.
Все ники заняты
Похоже на “синтаксическая ошибка”…
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