在python 3中识别unicode私用字符的正确方法是什么?模块unicodedata
中没有明显的相关性,这使得查找字符名称和属性变得容易。
某些背景:unicodedata.name()
,如果使用私人使用字符(例如,尝试ValueError
),则会提供unicodedata.name("\uf026")
,其中包含unicode字符的名称。但是空白字符(空间本身除外)以及可能的其他东西也会触发异常。那么,检测PUA字符的非黑客可靠方法是什么?
答案 0 :(得分:6)
私人使用字符全部在Co
general category中,由category()
unicodedata
中的>>> import unicodedata
>>> def is_pua(c):
... return unicodedata.category(c) == 'Co'
...
>>> is_pua(u'\uF026')
True
返回:
U+E000
鉴于私人使用字符集永远不会更改的Unicode标准guarantees(不会添加或删除任何字符),它也很安全 - 编码three ranges:
U+F8FF
至U+F0000
U+FFFFD
至U+100000
U+10FFFD
至app.yaml