无法在curses中显示Cyrillic符号

时间:2012-03-27 13:41:48

标签: python windows windows-7 python-2.6

我决定使用cp866来避免unicode 65001噩梦(bug,补丁等等),所以我程序中的每个输出字符串都编码成cp866

# coding=utf-8
print 'Кабздец'.decode('utf-8').encode('cp866')

此行将正确的字符串输出到Windows控制台,当然如果我在运行脚本之前设置了chcp 866。

但是,我无法使curses以相同的编码显示。

stdscr.addstr("Кабздец".decode('utf-8').encode('cp866')) 

这将输出垃圾。 Curses doc说我必须设置语言环境。所以我试着用

locale.setlocale(locale.LC_ALL, '')

这几乎没有变化,仍然是垃圾,我猜是因为我的语言环境是CP1251。 locale.getpreferredencoding()会返回cp1251

问题是如何让curses正确编码字符串。

我也试过

locale.setlocale(locale.LC_ALL, 'rus')

只会呈现不同的符号,而不是正确的符号。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用addstr调用上的altcharacterset属性?