stringprep --- Chuẩn bị chuỗi Internet¶
Source code: Lib/stringprep.py
Khi xác định những thứ (chẳng hạn như tên máy chủ) trên internet, thường cần phải so sánh những thông tin nhận dạng đó để tìm "sự bình đẳng". Chính xác cách thực hiện so sánh này có thể phụ thuộc vào miền ứng dụng, ví dụ: liệu nó có nên phân biệt chữ hoa chữ thường hay không. Cũng có thể cần phải hạn chế các nhận dạng có thể có, chỉ cho phép các nhận dạng bao gồm các ký tự "có thể in được".
RFC 3454 xác định quy trình "chuẩn bị" chuỗi Unicode trong các giao thức internet. Trước khi truyền các chuỗi vào dây, chúng được xử lý bằng quy trình chuẩn bị, sau đó chúng có dạng chuẩn hóa nhất định. Zz004zz xác định một tập hợp các bảng có thể được kết hợp thành các cấu hình. Mỗi cấu hình phải xác định bảng nào nó sử dụng và những phần tùy chọn nào khác của quy trình stringprep là một phần của cấu hình. Một ví dụ về hồ sơ stringprep là nameprep, được sử dụng cho các tên miền quốc tế hóa.
Mô-đun stringprep chỉ hiển thị các bảng từ RFC 3454. Vì các bảng này sẽ rất lớn để biểu diễn dưới dạng từ điển hoặc danh sách, nên mô-đun này sử dụng cơ sở dữ liệu ký tự Unicode bên trong. Bản thân mã nguồn mô-đun đã được tạo bằng tiện ích mkstringprep.py.
Kết quả là các bảng này được hiển thị dưới dạng hàm chứ không phải dưới dạng cấu trúc dữ liệu. Có hai loại bảng trong RFC: bộ và ánh xạ. Đối với một tập hợp, stringprep cung cấp "hàm đặc trưng", tức là một hàm trả về True nếu tham số là một phần của tập hợp. Đối với ánh xạ, nó cung cấp chức năng ánh xạ: được cung cấp khóa, nó trả về giá trị liên quan. Dưới đây là danh sách tất cả các chức năng có sẵn trong mô-đun.
- stringprep.in_table_a1(code)¶
Xác định xem code có trong bảngA.1 hay không (Điểm mã chưa được gán trong Unicode 3.2).
- stringprep.in_table_b1(code)¶
Xác định xem code có trong bảngB.1 hay không (Thường được ánh xạ tới không có gì).
- stringprep.map_table_b2(code)¶
Trả về giá trị được ánh xạ cho code theo bảngB.2 (Ánh xạ cho trường hợp gấp được sử dụng với NFKC).
- stringprep.map_table_b3(code)¶
Trả về giá trị được ánh xạ cho code theo bảngB.3 (Ánh xạ cho trường hợp gấp được sử dụng mà không chuẩn hóa).
- stringprep.in_table_c11(code)¶
Xác định xem code có trong bảngC.1.1 (ký tự khoảng trắng ASCII) hay không.
- stringprep.in_table_c12(code)¶
Xác định xem code có trong bảngC.1.2 (Ký tự khoảng trắng không phải ASCII) hay không.
- stringprep.in_table_c11_c12(code)¶
Xác định xem code có trong bảngC.1 hay không (Ký tự khoảng trắng, hợp của C.1.1 và C.1.2).
- stringprep.in_table_c21(code)¶
Xác định xem code có trong bảngC.2.1 (ký tự điều khiển ASCII) hay không.
- stringprep.in_table_c22(code)¶
Xác định xem code có trong bảngC.2.2 (Ký tự điều khiển không phải ASCII) hay không.
- stringprep.in_table_c21_c22(code)¶
Xác định xem code có trong bảngC.2 hay không (Ký tự điều khiển, kết hợp của C.2.1 và C.2.2).
- stringprep.in_table_c3(code)¶
Xác định xem code có trong bảngC.3 (Sử dụng riêng) hay không.
- stringprep.in_table_c4(code)¶
Xác định xem code có trong bảngC.4 (Điểm mã không phải ký tự) hay không.
- stringprep.in_table_c5(code)¶
Xác định xem code có trong bảngC.5 (Mã thay thế) hay không.
- stringprep.in_table_c6(code)¶
Xác định xem code có trong bảngC.6 (Không phù hợp với văn bản thuần túy) hay không.
- stringprep.in_table_c7(code)¶
Xác định xem code có trong bảngC.7 hay không (Không phù hợp với cách trình bày chuẩn).
- stringprep.in_table_c8(code)¶
Xác định xem code có trong bảngC.8 hay không (Thay đổi thuộc tính hiển thị hoặc không được dùng nữa).
- stringprep.in_table_c9(code)¶
Xác định xem code có trong bảngC.9 (Gắn thẻ ký tự) hay không.
- stringprep.in_table_d1(code)¶
Xác định xem code có nằm trong bảngD.1 hay không (Các ký tự có thuộc tính hai chiều "R" hoặc "AL").
- stringprep.in_table_d2(code)¶
Xác định xem code có nằm trong bảngD.2 hay không (Các ký tự có thuộc tính hai chiều "L").