Найти - Пользователи
Полная версия: Проблема с кодировкой в PyDev
Начало » Python для новичков » Проблема с кодировкой в PyDev
1
vkopey
Мой 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 !
Работает!
Но возникает вопрос: где в PyDev хранятся эти настройки кодирования?
И можно ли изменить encoding на “cp1251” во время исполнения моего модуля не изменяя site.py ?
helm2004
1)Правой кнопкой мыша на проекте - клац!

2)

vkopey
Спасибо, helm2004.
Нарил в инфу, поэтому отвечу на свой вопрос о смене кодировки sys:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8') 
print sys.getdefaultencoding() # будет 'utf-8', а не 'ascii'
Не понимаю почему по умолчанию стоит ‘ascii’, а не ‘utf-8’ ?
Дискриминация неанглоязычных? :)
Андрей Светлов

Из блога в блог кочует рецепт с sys.setdefaultencoding... Рецепт, между прочим, некорректный. Догадайтесь, когда он будет работать неверно. Что setdefaultencoding делает и, главное, чего она не делает?

beelze
все же стоит потратить 10 минут и внимательно прочесть один раз UNICODE HOWTO. В дальнейшем не придется решать юникодные проблемы методом тыка.
JOHN_16
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
В обязательном порядке, что бы знать.


Ну и напоследок:
Вы изначально должны ориентироваться на работоспособность кода просто выполняя скрипт в командной строке - все остальное вторично. И да ..PyDev та еще ..забавная штука - не антиреклама, сам использую.
beelze
>Это что еще за мракобесие?
традиционный прием - контрольный выстрел

ну и для того, чтобы ТС не наступил еще на одни популярные, но не всем известные грабли:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\zzz>chcp
Active code page: 866

тут подробно написано про это
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