Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Кодировка в Tk


Автор: nerezus 27.8.2006, 11:50
В начале файла стоит 
Код
# -*- coding: cp1251 -*-

Файл записан в Windows-1251

Однако в Tk интерфейсе вместо русских букв каракули.

Это баг, или я что-то не так сделал?
Если баг, то куда писать?

Добавлено @ 11:54 
Если юзать u'строка', то пашет

Вопрос: почему не пашет напрямую?

Автор: pythonwin 27.8.2006, 14:59
У тебя какой питон?

у меня Python 2.4.2 и я решил эту проблему так:
1) открыл файл "C:\Python24\Lib\site.py"
2) нашел функцию 
Код
setencoding

3) изменил encoding = "ascii" на encoding = "utf-8" - ты можешь здесь написать 'cp1251' или 'koi8-r'. Это как тебе нужно.

код функции:

Код

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 = "utf-8" # 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 !



Автор: nerezus 27.8.2006, 23:06
pythonwin, не, это уже совсем костыль )
мне просто непонятно, почему так происходит, но решение уже найдено такое: u'строка'

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)