python curses.ascii取决于区域设置?

时间:2008-11-30 12:18:19

标签: python locale ncurses

curses.ascii模块定义了一些很好的功能,例如可以识别哪些字符是可打印的(curses.ascii.isprint(ch))。

但是,根据正在使用的区域设置,可以打印不同的字符代码。例如,有一些抛光字符:

>>> ord('a')
97
>>> ord('ą')
177
>>> 

我想知道,有没有更好的方法来判断数字是否代表curses.ascii模块中使用的数字的可打印字符:

def isprint(c): return _ctoi(c) >= 32 and _ctoi(c) <= 126

这是一种不友好的语言环境。

2 个答案:

答案 0 :(得分:4)

如果将字符转换为unicode,则可以使用unicodedata:

>>> unicodedata.category(u'ą')[0] in 'LNPS'
True

答案 1 :(得分:2)

嗯,它被称为curses.ascii,因此使用ASCII规则进行打印是不可错的。如果您使用的是ISO 8位代码,或者您使用的是已知代码页,则需要的规则与实际代码及其显示内容相对应。

我认为使用unicode字符和标准Unicode分类很好。这可能无法解决curses和控制台安排实际正确显示的问题。

即使可以显示,也需要考虑应用程序可接受和不可接受的内容。