6.6. stringprep
- Internet字符串准备¶
源代码: Lib / stringprep.py
当在互联网上识别事物(例如主机名)时,通常需要比较这些识别“平等”。确切地,如何执行该比较可以取决于应用域,例如。是否应该不区分大小写。还可能需要限制可能的标识,以仅允许由“可打印”字符组成的标识。
RFC 3454定义了在互联网协议中“准备”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)¶确定代码是否在表C.1.1(ASCII空格字符)中。
stringprep.
in_table_c12
(code)¶确定代码是否在表C.1.2(非ASCII空格字符)中。
stringprep.
in_table_c11_c12
(code)¶确定代码是否在表C1(空间字符,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)¶确定代码是否在表C5(代理代码)中。
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”的字符)中。