stringprep
— 網際網路字串準備¶
原始碼: Lib/stringprep.py
在網際網路中識別事物(例如主機名)時,通常需要比較這些標識以確定“相等性”。這種比較的具體執行方式可能取決於應用程式領域,例如它是否應區分大小寫。還可能需要限制可能的標識,只允許由“可列印”字元組成的標識。
RFC 3454 定義了一個在網際網路協議中“準備”Unicode字串的程式。在將字串傳送到網路之前,它們會經過準備程式處理,之後它們會具有某種標準化形式。該 RFC 定義了一組表,這些表可以組合成配置檔案。每個配置檔案必須定義它使用哪些表,以及 stringprep
程式的哪些可選部分是該配置檔案的一部分。一個 stringprep
配置檔案的例子是 nameprep
,它用於國際化域名。
模組 stringprep
只暴露了 RFC 3454 中的表。由於這些表如果用字典或列表表示會非常大,因此該模組內部使用了 Unicode 字元資料庫。模組原始碼本身是使用 mkstringprep.py
實用程式生成的。
因此,這些表以函式而非資料結構的形式暴露。RFC 中有兩種表:集合和對映。對於集合,stringprep
提供了“特徵函式”,即一個函式,如果引數是集合的一部分,則返回 True
。對於對映,它提供了對映函式:給定鍵,它返回關聯的值。下面是模組中所有可用函式的列表。
- stringprep.in_table_a1(code)¶
確定 code 是否在表 A.1 中(Unicode 3.2 中未分配的程式碼點)。
- stringprep.in_table_b1(code)¶
確定 code 是否在表 B.1 中(通常對映為空)。
- stringprep.map_table_b2(code)¶
根據表 B.2(與 NFKC 一起使用的摺疊大小寫對映)返回 code 的對映值。
- stringprep.map_table_b3(code)¶
根據表 B.3(在沒有歸一化的情況下使用的摺疊大小寫對映)返回 code 的對映值。
- stringprep.in_table_c11(code)¶
確定 code 是否在表 C.1.1 中(ASCII 空格字元)。
- stringprep.in_table_c12(code)¶
確定 code 是否在表 C.1.2 中(非 ASCII 空格字元)。
- stringprep.in_table_c11_c12(code)¶
確定 code 是否在表 C.1 中(空格字元,C.1.1 和 C.1.2 的並集)。
- stringprep.in_table_c21(code)¶
確定 code 是否在表 C.2.1 中(ASCII 控制字元)。
- stringprep.in_table_c22(code)¶
確定 code 是否在表 C.2.2 中(非 ASCII 控制字元)。
- stringprep.in_table_c21_c22(code)¶
確定 code 是否在表 C.2 中(控制字元,C.2.1 和 C.2.2 的並集)。
- stringprep.in_table_c3(code)¶
確定 code 是否在表 C.3 中(私人使用)。
- stringprep.in_table_c4(code)¶
確定 code 是否在表 C.4 中(非字元程式碼點)。
- stringprep.in_table_c5(code)¶
確定 code 是否在表 C.5 中(代理程式碼)。
- stringprep.in_table_c6(code)¶
確定 code 是否在表 C.6 中(不適用於純文字)。
- stringprep.in_table_c7(code)¶
確定 code 是否在表 C.7 中(不適用於規範表示)。
- stringprep.in_table_c8(code)¶
確定 code 是否在表 C.8 中(改變顯示屬性或已廢棄)。
- stringprep.in_table_c9(code)¶
確定 code 是否在表 C.9 中(標記字元)。
- stringprep.in_table_d1(code)¶
確定 code 是否在表 D.1 中(雙向屬性為“R”或“AL”的字元)。
- stringprep.in_table_d2(code)¶
確定 code 是否在表 D.2 中(雙向屬性為“L”的字元)。