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


Автор: srd 24.10.2005, 04:52
Если сохранять исходник в кодировке cp1251, то потом функция help() печатает документацию с русским текстом правильно. Но Tkinter показывает вместо русского текста мусор. Если же сохранять исходник в кодировке utf-8, то теперь работает Tkinter, но мусор печатается вместо документации. Существует ли способ указать кодировку строк для Tkinter'а, или для функции help()?

Пока набираю исходник в cp1251, а перед строками для Tkinter'а ставлю модификатор u. Т.е:
Код

# -*- coding: cp1251 -*- 
"""строка документации"""
from Tkinter import *

tk = Tk()
tk.title(u"Заголовок окна")
tk.mainloop()

Какие ещё могут вылезти тут проблемы?

Автор: grock 24.10.2005, 17:41
правило простое, когда используем Tkinter используем только юникод (ну и конечно обязательно не забыть про #-*- codepage: cp1251 -*- ). Если пишем в файл, делаем raise передавай русские строки используем чистый cp1251


<строка в юникоде>.encode('cp1251') -- преобразует из юникода в обычную строку в кодировке сp1251

<обычная строка>.decode ('cp1251') -- преобразет из обычной в юникод, как вариант использовать ф-ю unicode (<обычная строка>,'cp1251')

Автор: srd 24.10.2005, 19:49
Гм, выглядит довольно угрожающе...

Автор: grock 25.10.2005, 08:50
всмысле, хочешь чтобы было по проще ?

Автор: srd 31.10.2005, 06:56
Да не, всё устраивает smile Я забил на Tkinter и теперь изучаю wxPython (тем более есть опыт работы с оригинальной wxWidgets), а там таких проблем нет.

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