繁体   English   中英

识别无法打印的unicode字符

[英]Identify unicode characters that can't be printed

我需要能够确定(或预测)unicode字符何时不可打印。 例如,如果我在默认设置下打印此unicode字符,它打印正常:

>>> print(u'\ua62b')
ꘫ

但是,如果我打印另一个unicode字符,它会打印成一个愚蠢的,奇怪的方块:

>>> print(u'\ua62c')
꘬

我真的需要能够在打印字符之前确定它是否会显示为一个丑陋的方块(或者有时候是一个匿名的空白)。 是什么导致这种情况,我该如何预测呢?

虽然判断运行脚本的终端(或终端使用的字体)是否能够正确呈现给定字符并不容易,但至少可以检查该字符是否实际具有表示。

字符\ꘫ被定义为VAI SYLLABLE NDOLE DO ,而字符\꘬没有定义,因此它可以呈现为正方形或其他通用符号。

检查字符是否已定义的一种方法是使用unicodedata模块

>>> import unicodedata
>>> unicodedata.name(u"\ua62b")
'VAI SYLLABLE NDOLE DO'
>>> unicodedata.name(u"\ua62c")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: no such name

如上所示,为\꘬字符引发了一个ValueError ,因为它未定义。

另一种方法是检查角色的类别。 如果是Cn则不分配字符:

>>> import unicodedata
>>> unicodedata.category(u"\ua62b")
'Lo'
>>> unicodedata.category(u"\ua62c")
'Cn'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM