Python UTF-8中汉字字符的上下限是多少?

Python UTF-8中汉字字符的上下限是多少?,python,cjk,Python,Cjk,我想在python中创建一个集合,其中包含所有中文字符的ord(): 对于英语,等效值为: english = set(range(ord('a'),ord('z') + 1 ) + range(ord('A'),ord('Z') + 1 )) 来自Unicode标准(v6.0,第12.1节) 如表12-2所示,在Unicode标准的七个主要块中可以找到汉字 在这些街区之外,还有一些额外的设施: Table 12-3. Small Extensions to the

我想在python中创建一个集合,其中包含所有中文字符的
ord()

对于英语,等效值为:

english = set(range(ord('a'),ord('z') + 1 ) +
              range(ord('A'),ord('Z') + 1 ))
来自Unicode标准(v6.0,第12.1节)

如表12-2所示,在Unicode标准的七个主要块中可以找到汉字

在这些街区之外,还有一些额外的设施:

Table 12-3. Small Extensions to the URO

Range     | Version | Comment
----------+---------+-------------------------------------------------
9FA6–9FB3 | 4.1     | Interoperability with HKSCS standard
9FB4–9FBB | 4.1     | Interoperability with GB 18030 standard
9FBC–9FC2 | 5.1     | Interoperability with commercial implementations
9FC3      | 5.1     | Correction of mistaken unification
9FC4–9FC6 | 5.2     | Interoperability with ARIB standard
9FC7–9FCB | 5.2     | Interoperability with HKSCS standard
要使用集合操作来构造一组有序值,可以执行以下操作:

chinese = set(range(0x4E00, 0xA000) +
              range(0x3400, 0x4DC0) +
              range(0x20000, 0x2A6E0) +
              range(0x2A700, 0x2B740) +
              range(0x2B740, 0x2B820) +
              range(0xF900, 0xFB00) +
              range(0x2F800, 0x2FA20) +
              range(0x9FA6, 0x9FCC))
但是,请注意,此集合包含75000多个字符,因此它可能不是此集合中最紧凑或最有效的数据结构

此外,如果您坚持对文字字符使用ord(),则需要使用32位unicode文字形式:

>>> ord(u'\U00002F800')
194560

您不希望直接在UTF-8中执行此操作,而是希望生成Unicode代码点并将其转换为UTF-8。您可以在此处找到所需内容:在整个Unicode中,汉字存在于多个不相交的集合中。有许多中文范围,但一些平台(唉,不是Python)允许您查询脚本的代码点范围。
>>> ord(u'\U00002F800')
194560