【问题标题】:Unable to display Cyrillic symbols in curses无法在诅咒中显示西里尔符号
【发布时间】:2012-03-27 13:41:47
【问题描述】:

我决定使用 cp866 来避免 unicode 65001 噩梦(请提供错误、补丁等...),因此我程序中的每个输出字符串都被编码为 cp866

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

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

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

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

这将输出垃圾。诅咒文档说我必须设置语言环境。所以我尝试使用

locale.setlocale(locale.LC_ALL, '')

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

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

我也试过了

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

这只会渲染不同的符号,而不是正确的符号。

【问题讨论】:

    标签: python windows windows-7 python-2.6


    【解决方案1】:

    您是否尝试过在 addstr 调用中使用 altcharacterset 属性?

    【讨论】:

    • nm,看起来不是这样......这是一个棘手的问题。您是否尝试过仅使用文档中示例中的方法并在设置区域设置后仅使用默认编码?
    • 我找到了一些解决方案,方法是将程序中的语言环境设置为rus,在使用 chcp 的控制台和程序中将代码页从 866 更改为 1251。我想这是我能做到的最好的了。
    猜你喜欢
    • 2014-06-01
    • 2021-06-27
    • 2018-02-19
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多