在线文档教程

stringprep

stringprep - Internet字符串准备

2.3版本的新功能。

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

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

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

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

stringprep.in_table_a1(code)

确定代码 是否在表A.1中(Unicode 3.2中的未分配代码点)。

stringprep.in_table_b1(code)

确定代码 是否在表B.1中(通常映射为空)。

stringprep.map_table_b2(code)

根据表B.2(用于与NFKC一起使用的案例折叠映射)返回代码的映射值。

stringprep.map_table_b3(code)

根据表B.3 返回映射的代码 值(使用没有规范化的情况下折叠映射)。

stringprep.in_table_c11(code)

确定代码 是否在tableC.1.1(ASCII空格字符)中。

stringprep.in_table_c12(code)

确定代码 是否在表C.1.2(非ASCII空格字符)中。

stringprep.in_table_c11_c12(code)

确定代码 是否在表C.1中(空格字符,C.1.1和C.1.2的联合)。

stringprep.in_table_c21(code)

确定代码 是否在表C.2.1(ASCII控制字符)中。

stringprep.in_table_c22(code)

确定代码 是否在表C.2.2(非ASCII控制字符)中。

stringprep.in_table_c21_c22(code)

确定代码 是否在表C.2中(控制字符,C.2.1和C.2.2的联合)。

stringprep.in_table_c3(code)

确定代码 是否在表C3中(私人使用)。

stringprep.in_table_c4(code)

确定代码 是否在表C.4中(非字符代码点)。

stringprep.in_table_c5(code)

确定代码 是否在表C.5(代理代码)中。

stringprep.in_table_c6(code)

确定代码 是否在表C.6中(不适用于纯文本)。

stringprep.in_table_c7(code)

确定代码 是否在表C.7中(不适用于规范表示)。

stringprep.in_table_c8(code)

确定代码 是否在表C.8中(更改显示属性或已弃用)。

stringprep.in_table_c9(code)

确定代码 是否在表C.9中(标记字符)。

stringprep.in_table_d1(code)

确定代码 是否在表D.1中(具有双向属性“R”或“AL”的字符)。

stringprep.in_table_d2(code)

确定代码 是否在表D.2中(具有双向属性“L”的字符)。