Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 20, 2010 21:04:22

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

кодировка в curses

как положено стоит в начале
# coding: utf8

но вот эта функция
screen.addstr(iy, ix, c)
если c будет русской буквой, выкидывает мне замечательные нечитабельные иероглифы в перемешку с русскими буквами

�~�~ м о ж е�~Bе  �~�~о п �~о -        │
│ threadov, v to vremya kak ya tebe pi �~и �~а �~�~? Я на п �~и м� - │
│ shu ti mozgesh pisat mnie, no yane ot ��~ не м ог �~, �~�~о де - │
│ vechu, ya ne bot, yha trenirovka mnog ла�~�~ �~па�~а�~ива�~ │
│ ozadachnosti, i proroditel chata v bu ва�~�~�~�~A к�~A �~а�~�~C �~C- │
│ dushem �~C�~в�~A �~A�~A�~A�~Cв
В одной части экрана писал англ буквами в другой русскими.



Офлайн

#2 Авг. 23, 2010 16:49:51

tmp_a6367100
От:
Зарегистрирован: 2010-08-23
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

кодировка в curses

следущий код вызывает описываемую ошибку:

#!/usr/bin/env python2
#-*- coding: UTF-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals

import curses

def main():
curses.initscr() # начало
try:
iy = 5
ix = 10
c = 'Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.'

screen = curses.newwin(15, 40, 3, 4)
screen.addstr(iy, ix, c.encode('UTF-8'))
screen.refresh()

screen.getch() # Press Any Key
finally:
curses.endwin() # конец

if __name__ == '__main__':
error = main()

if error:
exit(error)



Отредактировано (Авг. 23, 2010 16:58:45)

Офлайн

#3 Авг. 23, 2010 17:03:06

tmp_a6367100
От:
Зарегистрирован: 2010-08-23
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

кодировка в curses

а вот как символы показалиь :-) :-)

#!/usr/bin/env python2
#-*- coding: UTF-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals

import curses
import locale # ДОБАВИТЬ ЭТО!

def main():
locale.setlocale(locale.LC_ALL, '') # ДОБАВИТЬ ЭТО!
curses.initscr() # начало
try:
iy = 5
ix = 10
c = 'Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.'

screen = curses.newwin(15, 40, 3, 4)
screen.addstr(iy, ix, c.encode('UTF-8'))
screen.refresh()

screen.getch() # Press Any Key
finally:
curses.endwin() # конец

if __name__ == '__main__':
error = main()

if error:
exit(error)


но на форумах пишут что хоть с ВЫВОДом проблемы исчезают, но не факт что ВВОД тоже будет корректным :-D :-D



Отредактировано (Авг. 23, 2010 17:07:16)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version