Форум сайта python.su
3
Мой python модуль в кодировке cp1251. Работает если запускать из PyDev,
но не работает, если просто запустить модуль из cmd.
Видает ошибку:
UnicodeDecodeError: ‘ascii’ codec can't decode byte 0xc7 in position 73: ordinal not in range(128)
Так в чем же отличие запуска из PyDev и из cmd ?
Попробовал поменять в модуле site.py encoding c “ascii” на “cp1251”
def setencoding(): """Set the string encoding used by the Unicode implementation. The default is 'ascii', but if you're willing to experiment, you can change this.""" encoding = "ascii" # Default value set by _PyUnicode_Init() if 0: # Enable to support locale aware default string encodings. import locale loc = locale.getdefaultlocale() if loc[1]: encoding = loc[1] if 0: # Enable to switch off string to Unicode coercion and implicit # Unicode to string conversion. encoding = "undefined" if encoding != "ascii": # On Non-Unicode builds this will raise an AttributeError... sys.setdefaultencoding(encoding) # Needs Python Unicode build !
Отредактировано vkopey (Апрель 24, 2012 14:50:17)
Офлайн
9
1)Правой кнопкой мыша на проекте - клац!
2)
Отредактировано helm2004 (Апрель 24, 2012 17:38:08)
Офлайн
3
Спасибо, helm2004.
Нарил в инфу, поэтому отвечу на свой вопрос о смене кодировки sys:
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') print sys.getdefaultencoding() # будет 'utf-8', а не 'ascii'
Офлайн
14
Из блога в блог кочует рецепт с sys.setdefaultencoding... Рецепт, между прочим, некорректный. Догадайтесь, когда он будет работать неверно. Что setdefaultencoding делает и, главное, чего она не делает?
Офлайн
3
все же стоит потратить 10 минут и внимательно прочесть один раз UNICODE HOWTO. В дальнейшем не придется решать юникодные проблемы методом тыка.
Офлайн
221
vkopey
за такое решение нужно по рукам бить=) В исходники лезть что бы кодировку сменить..да вас в соответствующий зал славы поставить можно.
vkopeyВот это вас ну никак не насторожило?
the string encoding used by the Unicode implementation
vkopey
Мой python модуль в кодировке cp1251
vkopeyЧе к чему …. сами должны догадаться видимо.
# -*- coding: utf-8 -*-
vkopeyЭто что еще за мракобесие?import sys reload(sys)
beelzeВ обязательном порядке, что бы знать.
внимательно прочесть один раз UNICODE HOWTO
Отредактировано JOHN_16 (Апрель 25, 2012 04:26:51)
Офлайн
3
>Это что еще за мракобесие?
традиционный прием - контрольный выстрел 
ну и для того, чтобы ТС не наступил еще на одни популярные, но не всем известные грабли:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\zzz>chcp
Active code page: 866
Отредактировано beelze (Апрель 25, 2012 09:00:26)
Офлайн