You are here:  Home » Python » stringprep-Internet字符串准备(15)Python语言(必读进阶学习教程)(参考资料)

在识别互联网中的事物(例如主机名)时,通常需要将这些标识与“平等”进行比较。具体如何执行此比较可能取决于应用程序域,例如它是否应该不区分大小写。可能还需要限制可能的标识,以仅允许由“可打印”字符组成的标识。

RFC 3454定义了在Internet协议中“准备”Unicode字符串的过程。在将琴弦传递到导线上之前,将它们与准备程序一起处理,之后它们具有一定的标准化形式。RFC定义了一组表,可以将它们组合成配置文件。每个配置文件必须定义它使用的表,以及该stringprep 过程的其他可选部分是配置文件的一部分。stringprep配置文件的一个示例是 nameprep,用于国际化域名。

该模块stringprep仅公开表RFC 3454。由于这些表非常大以将它们表示为字典或列表,因此该模块在内部使用Unicode字符数据库。模块源代码本身是使用该mkstringprep.py实用程序生成的。

因此,这些表作为函数公开,而不是作为数据结构公开。RFC中有两种表:集合和映射。对于集合, stringprep提供“特征函数”,即如果参数是集合的一部分则返回true的函数。对于映射,它提供映射功能:给定键,它返回关联的值。以下是模块中可用的所有功能的列表。

stringprep.in_table_a1代码
确定代码是否在tableA.1中(Unicode 3.2中未分配的代码点)。
stringprep.in_table_b1代码
确定代码是否在tableB.1中(通常映射到空)。
stringprep.map_table_b2代码
根据tableB.2(与NFKC一起使用的大小写折叠映射)返回代码的映射值。
stringprep.map_table_b3代码
根据表B.3 返回代码的映射值(映射用于没有规范化的情况下的折叠)。
stringprep.in_table_c11代码
确定代码是否在tableC.1.1(ASCII空格字符)中。
stringprep.in_table_c12代码
确定代码是否在tableC.1.2(非ASCII空格字符)中。
stringprep.in_table_c11_c12代码
确定代码是否在tableC.1中(空格字符,C.1.1和C.1.2的并集)。
stringprep.in_table_c21代码
确定代码是否在tableC.2.1(ASCII控制字符)中。
stringprep.in_table_c22代码
确定代码是否在tableC.2.2(非ASCII控制字符)中。
stringprep.in_table_c21_c22代码
确定代码是否在tableC.2中(控制字符,C.2.1和C.2.2的并集)。
stringprep.in_table_c3代码
确定代码是否在tableC.3中(私人使用)。
stringprep.in_table_c4代码
确定代码是否在tableC.4(非字符代码点)中。
stringprep.in_table_c5代码
确定代码是否在tableC.5(代理代码)中。
stringprep.in_table_c6代码
确定代码是否在tableC.6中(不适用于纯文本)。
stringprep.in_table_c7代码
确定代码是否在tableC.7中(不适用于规范表示)。
stringprep.in_table_c8代码
确定代码是否在tableC.8中(更改显示属性或不推荐使用)。
stringprep.in_table_c9代码
确定代码是否在tableC.9(标记字符)中。
stringprep.in_table_d1代码
确定代码是否在tableD.1中(具有双向属性“R”或“AL”的字符)。
stringprep.in_table_d2代码
确定代码是否在tableD.2中(具有双向属性“L”的字符)。