0
我已经决定与CP866去避免的unicode 65001噩梦显示西里尔符号(BUG,补丁,等等......请),所以在我的程序每个输出字符串编码为CP866无法在诅咒
# coding=utf-8
print 'Кабздец'.decode('utf-8').encode('cp866')
这一行输出正确的字符串到Windows控制台,当然如果我在运行我的脚本之前设置chcp 866。
但是,我不能使诅咒显示在相同的编码。
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')
将只呈现不同的符号,不正确的。
nm,那看起来不是这个......这是一个棘手的问题。您是否尝试过使用文档中示例中的方法,并在设置区域设置后仅使用默认编码? – 2012-03-27 14:14:24
我通过在程序中将locale设置为'rus'找到了一些解决方案,在两个控制台中使用chcp和程序将代码页从866更改为1251。我想这是我能做到的最好的。 – Pablo 2012-03-27 14:23:03