Python 识别可以';不可印刷

Python 识别可以';不可印刷,python,unicode,printing,character-encoding,Python,Unicode,Printing,Character Encoding,我需要能够确定(或预测)unicode字符何时无法打印。例如,如果我在默认设置下打印此unicode字符,它可以很好地打印: >>> print(u'\ua62b') ꘫ 但如果我打印另一个unicode字符,它会打印成一个愚蠢、怪异的正方形: >>> print(u'\ua62c') ꘬ 我真的需要能够在打印字符之前确定它是否会像这样显示为一个丑陋的正方形(或者有时是一个匿名空白)。这是什么原因造成的,我如何预测?虽然很难判断运行脚本的终端(或终端使用的

我需要能够确定(或预测)unicode字符何时无法打印。例如,如果我在默认设置下打印此unicode字符,它可以很好地打印:

>>> print(u'\ua62b')
ꘫ
但如果我打印另一个unicode字符,它会打印成一个愚蠢、怪异的正方形:

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

我真的需要能够在打印字符之前确定它是否会像这样显示为一个丑陋的正方形(或者有时是一个匿名空白)。这是什么原因造成的,我如何预测?

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

字符
\ua62b
定义为
VAI音节NDOLE DO
,而字符
\ua62c
没有定义,因此可以将其呈现为正方形或其他通用符号

检查是否定义了字符的一种方法是使用:


我不确定这是不是一件容易解决的事情,这取决于输出到的终端以及终端使用的字体。@DanielGibbs啊!如果这取决于字体,我应该能够解析字体信息,对吗?或者选择具有已知限制的字体?我也应该能够确定关于终端的已知情况。虽然。。。终端决定此功能的原因是什么?事实上,在您的情况下,问题可能是字符
\ua62c
实际上不是有效的Unicode字符,因此您可以先对此进行某种检查。@DanielGibbs啊,哈!好吧,这是一件我不知道的事。。。那么,一些unicode ID指向“无效”字符?我不知道那是件事。有没有办法检查有效性?非常感谢您的及时回复。我学到了一些关于Unicode的知识。看来我有一些书要读。谢谢
>>> 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
>>> import unicodedata
>>> unicodedata.category(u"\ua62b")
'Lo'
>>> unicodedata.category(u"\ua62c")
'Cn'