python curses.ascii取决于语言环境?

python curses.ascii取决于语言环境?,python,locale,ncurses,Python,Locale,Ncurses,curses.ascii模块定义了一些很好的函数,例如允许识别哪些字符是可打印的(curses.ascii.isprint(ch)) 但是,根据所使用的区域设置,可以打印不同的字符代码。例如,存在某些波兰字符: >>> ord('a') 97 >>> ord('ą') 177 >>> 我想知道,有没有更好的方法来判断一个数字是否代表可打印字符,而不是curses.ascii模块中使用的数字: def isprint(c): return

curses.ascii
模块定义了一些很好的函数,例如允许识别哪些字符是可打印的(
curses.ascii.isprint(ch)

但是,根据所使用的区域设置,可以打印不同的字符代码。例如,存在某些波兰字符:

>>> ord('a')
97
>>> ord('ą')
177
>>> 
我想知道,有没有更好的方法来判断一个数字是否代表可打印字符,而不是
curses.ascii
模块中使用的数字:

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

def isprint(c):返回_-ctoi(c)>=32和_-ctoi(c)如果将字符转换为unicode,则可以使用unicode数据:

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

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

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

好的,它被称为curses.ascii,所以使用ascii规则来定义什么是可打印的并不奇怪。如果您使用的是ISO 8位代码,或从已知代码页进行操作,则需要与实际代码及其显示内容相对应的规则

我认为使用unicode字符和标准unicode分类很好。这可能无法处理诅咒和控制台安排实际上要正确显示的内容


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

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

我认为使用unicode字符和标准unicode分类很好。这可能无法处理诅咒和控制台安排实际上要正确显示的内容

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