Python [currently] does not allow non-ASCII identifiers, so it's not surprising that Unicode parameter names don't work. It's also a really bad idea to pass data from an AJAX XML or JSON request directly to a function without doing at least some post-processing of the data in order to prevent DOS attacks, code injection, etc. dict[[str[key], value] for key, value in kw.iteritems[]] is all that's needed for the above. BTW, I don't think those few micro-seconds really matter in the face of XML or JSON decoding, network latency, etc. ;-]
Kể từ khi triển khai PEP 393 trong Python 3. 3, Các đối tượng Unicode bên trong sử dụng nhiều cách biểu diễn khác nhau, để cho phép xử lý toàn bộ phạm vi ký tự Unicode trong khi vẫn duy trì hiệu quả bộ nhớ. Có những trường hợp đặc biệt đối với các chuỗi có tất cả các điểm mã dưới 128, 256 hoặc 65536;
* và các biểu diễn UTF-8 được tạo theo yêu cầu và được lưu vào bộ đệm trong đối tượng Unicode. Biểu diễn * không được dùng nữa và không hiệu quả.
Do quá trình chuyển đổi giữa API cũ và API mới, các đối tượng Unicode bên trong có thể ở hai trạng thái tùy thuộc vào cách chúng được tạo
Các đối tượng Unicode “chính tắc” là tất cả các đối tượng được tạo bởi API Unicode không được dùng nữa. Họ sử dụng đại diện hiệu quả nhất cho phép thực hiện
Các đối tượng Unicode “cũ” đã được tạo thông qua một trong các API không dùng nữa [thường là ] và chỉ mang biểu tượng * ; .
Ghi chú
Đối tượng Unicode “cũ” sẽ bị xóa trong Python 3. 12 với các API không dùng nữa. Tất cả các đối tượng Unicode sẽ là "chuẩn" kể từ đó. Xem PEP 623 để biết thêm thông tin
Loại Unicode
Đây là các loại đối tượng Unicode cơ bản được sử dụng để triển khai Unicode trong Python
loại Py_UCS4loại Py_UCS2
loại Py_UCS1
Part of the .
Các loại này là typedefs cho các loại số nguyên không dấu đủ rộng để chứa các ký tự lần lượt là 32 bit, 16 bit và 8 bit. Khi xử lý các ký tự Unicode đơn lẻ, hãy sử dụng
Mới trong phiên bản 3. 3
type Py_UNICODEĐây là typedef của wchar_t , .
Đã thay đổi trong phiên bản 3. 3. Trong các phiên bản trước, đây là loại 16 bit hoặc 32 bit tùy thuộc vào việc bạn đã chọn phiên bản Unicode “hẹp” hay “rộng” của Python khi xây dựng.
loại PyASCIIObjectloại PyCompactUnicodeObject
loại PyUnicodeObject
These subtypes of represent a Python Unicode object. In almost all cases, they shouldn’t be used directly, since all API functions that deal with Unicode objects take and return pointers.
Mới trong phiên bản 3. 3
PyUnicode_TypeMột phần của.
Ví dụ này đại diện cho loại Python Unicode. Nó được hiển thị với mã Python là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian6
Các API sau đây là các macro C và các hàm nội tuyến tĩnh để kiểm tra nhanh và truy cập vào dữ liệu chỉ đọc nội bộ của các đối tượng Unicode
int PyUnicode_Check[ *o]Return true if the object o is a Unicode object or an instance of a Unicode subtype. This function always succeeds.
int PyUnicode_CheckExact[ *o]Return true if the object o is a Unicode object, but not an instance of a subtype. This function always succeeds.
int PyUnicode_READY[ *o]Ensure the string object o is in the “canonical” representation. This is required before using any of the access macros described below.
Trả về
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 nếu thành công và
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 với một ngoại lệ được đặt khi thất bại, điều này đặc biệt xảy ra nếu cấp phát bộ nhớ không thành công
Mới trong phiên bản 3. 3
Không dùng nữa kể từ phiên bản 3. 10, sẽ bị xóa trong phiên bản 3. 12. API này sẽ bị xóa cùng với.
PyUnicode_GET_LENGTH[ *o]Return the length of the Unicode string, in code points. o has to be a Unicode object in the “canonical” representation [not checked].
Mới trong phiên bản 3. 3
*PyUnicode_1BYTE_DATA[ *o]*PyUnicode_2BYTE_DATA[ *o]
*PyUnicode_4BYTE_DATA[ *o]
Return a pointer to the canonical representation cast to UCS1, UCS2 or UCS4 integer types for direct character access. No checks are performed if the canonical representation has the correct character size; use to select the right macro. Make sure has been called before accessing this.
Mới trong phiên bản 3. 3
PyUnicode_WCHAR_KINDPyUnicode_1BYTE_KIND
PyUnicode_2BYTE_KIND
PyUnicode_4BYTE_KIND
Trả về giá trị của macro.
Mới trong phiên bản 3. 3
Không dùng nữa kể từ phiên bản 3. 10, sẽ bị xóa trong phiên bản 3. 12. ______15 không được dùng nữa.
int PyUnicode_KIND[ *o]Return one of the PyUnicode kind constants [see above] that indicate how many bytes per character this Unicode object uses to store its data. o has to be a Unicode object in the “canonical” representation [not checked].
Mới trong phiên bản 3. 3
void *PyUnicode_DATA[ *o]Return a void pointer to the raw Unicode buffer. o has to be a Unicode object in the “canonical” representation [not checked].
Mới trong phiên bản 3. 3
void PyUnicode_WRITE[int loại, void *data, index, value]Write into a canonical representation data [as obtained with ]. This function performs no sanity checks, and is intended for usage in loops. The caller should cache the kind value and data pointer as obtained from other calls. index is the index in the string [starts at 0] and value is the new code point value which should be written to that location.
Mới trong phiên bản 3. 3
PyUnicode_READ[int loại , void *data, index]Read a code point from a canonical representation data [as obtained with ]. No checks or ready calls are performed.
Mới trong phiên bản 3. 3
PyUnicode_READ_CHAR[ *o , index]Read a character from a Unicode object o, which must be in the “canonical” representation. This is less efficient than if you do multiple consecutive reads.
Mới trong phiên bản 3. 3
PyUnicode_MAX_CHAR_VALUE[ *o]Return the maximum code point that is suitable for creating another string based on o, which must be in the “canonical” representation. This is always an approximation but more efficient than iterating over the string.
Mới trong phiên bản 3. 3
PyUnicode_GET_SIZE[ *o]Return the size of the deprecated representation, in code units [this includes surrogate pairs as 2 units]. o has to be a Unicode object [not checked].
Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API Unicode kiểu cũ, vui lòng chuyển sang sử dụng.
PyUnicode_GET_DATA_SIZE[ *o]Return the size of the deprecated representation in bytes. o has to be a Unicode object [not checked].
Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API Unicode kiểu cũ, vui lòng chuyển sang sử dụng.
*PyUnicode_AS_UNICODE[ *o]const char *PyUnicode_AS_DATA[ *o]
Return a pointer to a representation of the object. The returned buffer is always terminated with an extra null code point. It may also contain embedded null code points, which would cause the string to be truncated when used in most C functions. The
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian84 form casts the pointer to const char* . Đối số o phải là một đối tượng Unicode [không được chọn].
Đã thay đổi trong phiên bản 3. 3. Chức năng này hiện không hiệu quả – bởi vì trong nhiều trường hợp, biểu diễn không tồn tại và cần được tạo – và có thể không thành công [trả về
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 với một bộ ngoại lệ]. Cố gắng chuyển mã để sử dụng macro
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 mới hoặc sử dụng hoặc.
Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API Unicode kiểu cũ, vui lòng chuyển sang sử dụng dòng macro
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87. int PyUnicode_IsIdentifier[ *o]
Part of the .
Trả về
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 nếu chuỗi là một mã định danh hợp lệ theo định nghĩa ngôn ngữ, mục. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 nếu không
Đã thay đổi trong phiên bản 3. 9. Hàm không gọi nữa nếu chuỗi chưa sẵn sàng.
Thuộc tính ký tự Unicode
Unicode cung cấp nhiều thuộc tính ký tự khác nhau. Những cái thường cần nhất có sẵn thông qua các macro này được ánh xạ tới các hàm C tùy thuộc vào cấu hình Python
int Py_UNICODE_ISSPACE[ ch]Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is a whitespace character.int Py_UNICODE_ISLOWER[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is a lowercase character.int Py_UNICODE_ISUPPER[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is an uppercase character.int Py_UNICODE_ISTITLE[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is a titlecase character.int Py_UNICODE_ISLINEBREAK[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is a linebreak character.int Py_UNICODE_ISDECIMAL[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is a decimal character.int Py_UNICODE_ISDIGIT[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is a digit character.int Py_UNICODE_ISNUMERIC[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is a numeric character.int Py_UNICODE_ISALPHA[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is an alphabetic character.int Py_UNICODE_ISALNUM[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is an alphanumeric character.int Py_UNICODE_ISPRINTABLE[ ch]
Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7 depending on whether ch is a printable character. Nonprintable characters are those characters defined in the Unicode character database as “Other” or “Separator”, excepting the ASCII space [0x20] which is considered printable. [Note that printable characters in this context are those which should not be escaped when is invoked on a string. It has no bearing on the handling of strings written to or .]
Các API này có thể được sử dụng để chuyển đổi ký tự trực tiếp nhanh chóng
Py_UNICODE_TOLOWER[ ch]Trả về ký tự ch đã chuyển đổi .
Không dùng nữa kể từ phiên bản 3. 3. Hàm này sử dụng ánh xạ trường hợp đơn giản.
Py_UNICODE_TOUPPER[ ch]Trả về ký tự ch đã chuyển đổi .
Không dùng nữa kể từ phiên bản 3. 3. Hàm này sử dụng ánh xạ trường hợp đơn giản.
Py_UNICODE_TOTITLE[ ch]Trả về ký tự ch đã chuyển đổi .
Không dùng nữa kể từ phiên bản 3. 3. Hàm này sử dụng ánh xạ trường hợp đơn giản.
int Py_UNICODE_TODECIMAL[ ch]Return the character ch converted to a decimal positive integer. Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 if this is not possible. This macro does not raise exceptions.int Py_UNICODE_TODIGIT[ ch]
Return the character ch converted to a single digit integer. Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 if this is not possible. This macro does not raise exceptions.nhân đôi Py_UNICODE_TONUMERIC[ ch]
Return the character ch converted to a double. Return
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian161 if this is not possible. This macro does not raise exceptions.
Các API này có thể được sử dụng để làm việc với các chất thay thế
Py_UNICODE_IS_SURROGATE[ch]Kiểm tra xem ch có phải là .
Py_UNICODE_IS_HIGH_SURROGATE[ch]Kiểm tra xem ch có phải là .
Py_UNICODE_IS_LOW_SURROGATE[ch]Kiểm tra xem ch có phải là .
Py_UNICODE_JOIN_SURROGATES[cao , thấp]Join two surrogate characters and return a single Py_UCS4 value. high and low are respectively the leading and trailing surrogates in a surrogate pair.
Tạo và truy cập chuỗi Unicode
Để tạo các đối tượng Unicode và truy cập các thuộc tính trình tự cơ bản của chúng, hãy sử dụng các API này
*PyUnicode_New[ kích thước , maxchar]Return value: New reference.
Tạo một đối tượng Unicode mới. maxchar phải là điểm mã tối đa thực sự được đặt trong chuỗi. Là một giá trị gần đúng, nó có thể được làm tròn đến giá trị gần nhất trong dãy 127, 255, 65535, 1114111
Đây là cách được đề xuất để phân bổ một đối tượng Unicode mới. Các đối tượng được tạo bằng chức năng này không thể thay đổi kích thước
Mới trong phiên bản 3. 3
Return value: New reference.
Tạo một đối tượng Unicode mới với loại đã cho [các giá trị có thể là, v.v. , như được trả về bởi ]. Bộ đệm phải trỏ đến một mảng có đơn vị kích thước là 1, 2 hoặc 4 byte cho mỗi ký tự, tùy theo loại
Nếu cần, bộ đệm đầu vào được sao chép và chuyển thành biểu diễn chính tắc. Ví dụ: nếu bộ đệm là một chuỗi UCS4 [] và nó chỉ bao gồm các điểm mã trong phạm vi UCS1, thì nó sẽ được chuyển đổi thành UCS1 []
Mới trong phiên bản 3. 3
*PyUnicode_FromStringAndSize[const char *u, size]Return value: New reference. Part of the .
Tạo một đối tượng Unicode từ bộ đệm char u. Các byte sẽ được hiểu là được mã hóa UTF-8. Bộ đệm được sao chép vào đối tượng mới. Nếu bộ đệm không phải là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, giá trị trả về có thể là một đối tượng dùng chung, tôi. e. sửa đổi dữ liệu không được phép
Nếu bạn là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, chức năng này hoạt động giống như với bộ đệm được đặt thành
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86. Cách sử dụng này không được dùng nữa và sẽ bị xóa trong Python 3. 12 *PyUnicode_FromString[const char *u]
Return value: New reference. Part of the .
Tạo một đối tượng Unicode từ bộ đệm char kết thúc null được mã hóa UTF-8 u
*PyUnicode_FromFormat[const char *format, ...]Trả về giá trị. Tài liệu tham khảo mới. một phần của.
Lấy một chuỗi định dạng kiểu C
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian234 và một số lượng đối số khác nhau, tính toán kích thước của chuỗi Python Unicode kết quả và trả về một chuỗi có các giá trị được định dạng trong đó. Các đối số của biến phải là loại C và phải tương ứng chính xác với các ký tự định dạng ở định dạng chuỗi mã hóa ASCII. Các ký tự định dạng sau được cho phép
định dạng ký tự
Loại
Bình luận
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian235
không có
Ký tự % theo nghĩa đen
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian236
int
Một ký tự đơn, được biểu diễn dưới dạng C int
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian237
int
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian238.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian239
int không dấu
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian60.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian61
Dài
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian62.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian63
Dài
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian64.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian65
không dấu dài
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian66.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian67
dài dài
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian68.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian69
dài dài
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian70.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian71
không dấu lâu dài
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian72.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian73
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian75.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian76
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian78.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian79
size_t
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian00.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian01
int
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian02.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian03
int
Tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian04.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian05
const ký tự *
Một mảng ký tự C kết thúc null
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian06
const void*
Biểu diễn hex của con trỏ C. Hầu hết tương đương với
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian07 ngoại trừ việc nó được đảm bảo bắt đầu bằng
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian08 theo nghĩa đen bất kể sản lượng của
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian09 của nền tảng là gì
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian10
PyObject*
Kết quả của cuộc gọi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian12
PyObject*
Đối tượng Unicode
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian13
PyObject*, const char*
Một đối tượng Unicode [có thể là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86] và một mảng ký tự C kết thúc bằng null làm tham số thứ hai [sẽ được sử dụng nếu tham số đầu tiên là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86]
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian16
PyObject*
Kết quả của cuộc gọi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian18
PyObject*
Kết quả của cuộc gọi
Một ký tự định dạng không được nhận dạng khiến tất cả phần còn lại của chuỗi định dạng được sao chép nguyên trạng vào chuỗi kết quả và mọi đối số bổ sung bị loại bỏ
Ghi chú
Đơn vị định dạng chiều rộng là số ký tự chứ không phải byte. Đơn vị định dạng chính xác là số byte cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian20 và
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 [nếu đối số
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian22 là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86] và một số ký tự cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian24,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian25,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian26,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian27 và
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 [nếu đối số
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian22 không phải là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86]1[,,,,,,,,,,,,]
Đối với các chỉ định số nguyên [d, u, ld, li, lu, lld, lli, llu, zd, zi, zu, i, x]. cờ chuyển đổi 0 có hiệu lực ngay cả khi độ chính xác được cung cấp
Đã thay đổi trong phiên bản 3. 2. Đã thêm hỗ trợ cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian31 và
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian32.
Đã thay đổi trong phiên bản 3. 3. Đã thêm hỗ trợ cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian33,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian34 và
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian35.
Đã thay đổi trong phiên bản 3. 4. Hỗ trợ định dạng độ rộng và độ chính xác cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian20,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian24,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian25,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian26,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian27 đã được thêm vào. *PyUnicode_FromFormatV[const char *format, va_list vargs]
Return value: New reference. Part of the .
Giống hệt ngoại trừ việc nó nhận đúng hai đối số
*PyUnicode_FromEncodedObject[ *obj, const char *encoding, const char *errors]Return value: New reference. Part of the .
Giải mã một đối tượng được mã hóa obj thành một đối tượng Unicode
và khác được giải mã theo mã hóa nhất định và sử dụng xử lý lỗi được xác định bởi lỗi. Cả hai đều có thể là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 để giao diện sử dụng các giá trị mặc định [xem để biết chi tiết]
Tất cả các đối tượng khác, bao gồm các đối tượng Unicode, khiến a được đặt
API trả về
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu có lỗi. Người gọi chịu trách nhiệm giải mã các đối tượng được trả về PyUnicode_GetLength[ *unicode]
Part of the since version 3.7.
Trả về độ dài của đối tượng Unicode, tính bằng điểm mã
Mới trong phiên bản 3. 3
PyUnicode_Copy Characters[ *đến , to_start, *from, from_start, how_many]Copy characters from one Unicode object into another. This function performs character conversion when necessary and falls back to
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian48 if possible. Returns
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 and sets an exception on error, otherwise returns the number of copied characters.
Mới trong phiên bản 3. 3
PyUnicode_Fill[ *unicode , start, length, fill_char]Fill a string with a character: write fill_char into
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian50.
Không thành công nếu fill_char lớn hơn ký tự tối đa của chuỗi hoặc nếu chuỗi có nhiều hơn 1 tham chiếu
Trả về số lượng ký tự đã viết hoặc trả về
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 và đưa ra một ngoại lệ khi có lỗi
Mới trong phiên bản 3. 3
int PyUnicode_WriteChar[ *unicode, index, character]Part of the since version 3.7.
Viết một ký tự vào một chuỗi. Chuỗi phải được tạo thông qua. Vì các chuỗi Unicode được cho là không thay đổi nên chuỗi này không được chia sẻ hoặc chưa được băm
Hàm này kiểm tra xem unicode có phải là đối tượng Unicode không, chỉ mục có nằm ngoài giới hạn không và đối tượng có thể được sửa đổi một cách an toàn [i. e. rằng số tham chiếu của nó là một]
Mới trong phiên bản 3. 3
PyUnicode_ReadChar[ *unicode , index]Part of the since version 3.7.
Đọc một ký tự từ một chuỗi. Hàm này kiểm tra xem unicode có phải là đối tượng Unicode không và chỉ mục không nằm ngoài giới hạn, ngược lại, hàm này không thực hiện kiểm tra lỗi
Mới trong phiên bản 3. 3
*PyUnicode_Substring[ *str, start, end]Return value: New reference. Part of the since version 3.7.
Trả về một chuỗi con của str, từ bắt đầu chỉ mục ký tự [bao gồm] đến kết thúc chỉ mục ký tự [không bao gồm]. Chỉ số tiêu cực không được hỗ trợ
Mới trong phiên bản 3. 3
*PyUnicode_AsUCS4[ *u, *buffer, buflen, int copy_null]Part of the since version 3.7.
Sao chép chuỗi u vào bộ đệm UCS4, bao gồm ký tự null, nếu copy_null được đặt. Trả về
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 và đặt ngoại lệ cho lỗi [cụ thể là a nếu buflen nhỏ hơn độ dài của u]. bộ đệm được trả lại khi thành công
Mới trong phiên bản 3. 3
*PyUnicode_AsUCS4Copy[ *u]Part of the since version 3.7.
Sao chép chuỗi u vào bộ đệm UCS4 mới được phân bổ bằng cách sử dụng. Nếu điều này không thành công,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 được trả lại với một bộ. Bộ đệm được trả về luôn có thêm một điểm mã rỗng được thêm vào
Mới trong phiên bản 3. 3
API Py_UNICODE không dùng nữa
Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12
Các chức năng API này không được dùng nữa khi triển khai PEP 393. Các mô-đun mở rộng có thể tiếp tục sử dụng chúng vì chúng sẽ không bị xóa trong Python 3. x, nhưng cần lưu ý rằng việc sử dụng chúng hiện có thể gây ra các lỗi về hiệu suất và bộ nhớ
*PyUnicode_FromUnicode[const *u, size]Return value: New reference.
Tạo một đối tượng Unicode từ bộ đệm Py_UNICODE u với kích thước đã cho. bạn có thể là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 khiến nội dung không được xác định. Người dùng có trách nhiệm điền các dữ liệu cần thiết. Bộ đệm được sao chép vào đối tượng mới
Nếu bộ đệm không phải là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, giá trị trả về có thể là một đối tượng được chia sẻ. Do đó, việc sửa đổi đối tượng Unicode kết quả chỉ được phép khi bạn là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86
Nếu bộ đệm là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, phải được gọi sau khi nội dung chuỗi đã được điền trước khi sử dụng bất kỳ macro truy cập nào, chẳng hạn như
Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API Unicode kiểu cũ, vui lòng chuyển sang sử dụng , , hoặc.
*PyUnicode_AsUnicode[ *unicode]Return a read-only pointer to the Unicode object’s internal buffer, or
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 on error. This will create the * của đối tượng nếu nó chưa có sẵn. Bộ đệm luôn được kết thúc bằng một điểm mã null bổ sung. Lưu ý rằng chuỗi kết quả cũng có thể chứa các điểm mã null được nhúng, điều này sẽ khiến chuỗi bị cắt bớt khi được sử dụng trong hầu hết các hàm C.
Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API Unicode kiểu cũ, vui lòng chuyển sang sử dụng , hoặc các API mới tương tự.
*PyUnicode_AsUnicodeAndSize[ *unicode, *size]Like , but also saves the array length [excluding the extra null terminator] in size. Note that the resulting * có thể chứa các điểm mã null được nhúng, điều này sẽ khiến chuỗi bị cắt bớt khi được sử dụng trong hầu hết các hàm C.
Mới trong phiên bản 3. 3
Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API Unicode kiểu cũ, vui lòng chuyển sang sử dụng , hoặc các API mới tương tự.
PyUnicode_GetSize[ *unicode]Part of the .
Trả về kích thước của biểu diễn không dùng nữa, theo đơn vị mã [điều này bao gồm các cặp thay thế dưới dạng 2 đơn vị]
Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API Unicode kiểu cũ, vui lòng chuyển sang sử dụng.
*PyUnicode_FromObject[ *obj]Return value: New reference. Part of the .
Sao chép một thể hiện của kiểu con Unicode sang một đối tượng Unicode thực sự mới nếu cần. Nếu obj đã là một đối tượng Unicode thực sự [không phải là một kiểu con], hãy trả về tham chiếu với số lần đếm tăng dần
Các đối tượng không phải là Unicode hoặc các kiểu con của nó sẽ gây ra lỗi
Mã hóa ngôn ngữ
Mã hóa ngôn ngữ hiện tại có thể được sử dụng để giải mã văn bản từ hệ điều hành
*PyUnicode_DecodeLocaleAndSize[const char *str, len, const char *errors]Return value: New reference. Part of the since version 3.7.
Giải mã một chuỗi từ UTF-8 trên Android và VxWorks hoặc từ mã hóa ngôn ngữ hiện tại trên các nền tảng khác. Trình xử lý lỗi được hỗ trợ là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian82 và
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian83 [PEP 383]. Bộ giải mã sử dụng trình xử lý lỗi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian82 nếu lỗi là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86. str phải kết thúc bằng ký tự null nhưng không thể chứa ký tự null được nhúng
Sử dụng để giải mã một chuỗi từ
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 [mã hóa ngôn ngữ được đọc khi khởi động Python]
Chức năng này bỏ qua các
Xem thêm
Chức năng
Mới trong phiên bản 3. 3
Đã thay đổi trong phiên bản 3. 7. Chức năng hiện cũng sử dụng mã hóa ngôn ngữ hiện tại cho trình xử lý lỗi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian89, ngoại trừ trên Android. Trước đây, được sử dụng cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian89 và mã hóa ngôn ngữ hiện tại được sử dụng cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian92. *PyUnicode_DecodeLocale[const char *str, const char *errors]
Return value: New reference. Part of the since version 3.7.
Tương tự như , nhưng tính toán độ dài chuỗi bằng cách sử dụng
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian94
Mới trong phiên bản 3. 3
*PyUnicode_EncodeLocale[ *unicode, const char *errors]Return value: New reference. Part of the since version 3.7.
Mã hóa một đối tượng Unicode thành UTF-8 trên Android và VxWorks hoặc mã hóa ngôn ngữ hiện tại trên các nền tảng khác. Trình xử lý lỗi được hỗ trợ là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian82 và
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian83 [PEP 383]. Bộ mã hóa sử dụng trình xử lý lỗi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian82 nếu lỗi là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86. Trả lại một đối tượng. unicode không thể chứa các ký tự null được nhúng
Sử dụng để mã hóa một chuỗi thành
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 [mã hóa ngôn ngữ được đọc khi khởi động Python]
Chức năng này bỏ qua các
Xem thêm
Chức năng
Mới trong phiên bản 3. 3
Đã thay đổi trong phiên bản 3. 7. Chức năng hiện cũng sử dụng mã hóa ngôn ngữ hiện tại cho trình xử lý lỗi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian89, ngoại trừ trên Android. Trước đây, được sử dụng cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian89 và mã hóa ngôn ngữ hiện tại được sử dụng cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian92.
Mã hóa hệ thống tệp
Để mã hóa và giải mã tên tệp và các chuỗi môi trường khác, nên sử dụng
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 làm mã hóa và nên sử dụng
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian808 làm trình xử lý lỗi [PEP 383 và PEP 529]. Để mã hóa tên tệp thành trong quá trình phân tích cú pháp đối số, nên sử dụng bộ chuyển đổi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian810, chuyển dưới dạng hàm chuyển đổiint PyUnicode_FSConverter[ *obj, void *result]
Part of the .
Trình chuyển đổi ParseTuple. mã hóa các đối tượng – thu được trực tiếp hoặc thông qua giao diện – để sử dụng ; . kết quả phải là * phải được giải phóng khi không còn được sử dụng.
Mới trong phiên bản 3. 1
Đã thay đổi trong phiên bản 3. 6. Chấp nhận một.
Để giải mã tên tệp thành trong quá trình phân tích cú pháp đối số, nên sử dụng trình chuyển đổi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian810, chuyển dưới dạng hàm chuyển đổiint PyUnicode_FSDecoder[ *obj, void *result]
Part of the .
Trình chuyển đổi ParseTuple. giải mã các đối tượng – thu được trực tiếp hoặc gián tiếp thông qua giao diện – để sử dụng; . kết quả phải là * phải được giải phóng khi không còn được sử dụng.
Mới trong phiên bản 3. 2
Đã thay đổi trong phiên bản 3. 6. Chấp nhận một.
*PyUnicode_DecodeFSDefaultAndSize[const char *s, size]Return value: New reference. Part of the .
Giải mã một chuỗi từ
Nếu
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 không được đặt, hãy quay lại mã hóa ngôn ngữ
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 được khởi tạo khi khởi động từ mã hóa ngôn ngữ và không thể sửa đổi sau này. Nếu bạn cần giải mã một chuỗi từ mã hóa ngôn ngữ hiện tại, hãy sử dụng
Xem thêm
Chức năng
Đã thay đổi trong phiên bản 3. 6. Sử dụng trình xử lý lỗi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian808. *PyUnicode_DecodeFSDefault[const char *s]
Return value: New reference. Part of the .
Giải mã một chuỗi kết thúc null từ
Nếu
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 không được đặt, hãy quay lại mã hóa ngôn ngữ
Sử dụng nếu bạn biết độ dài chuỗi
Đã thay đổi trong phiên bản 3. 6. Sử dụng trình xử lý lỗi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian808. *PyUnicode_EncodeFSDefault[ *unicode]
Return value: New reference. Part of the .
Mã hóa một đối tượng Unicode thành
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 bằng trình xử lý lỗi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian808 và trả về. Lưu ý rằng đối tượng kết quả có thể chứa byte rỗng
Nếu
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 không được đặt, hãy quay lại mã hóa ngôn ngữ
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 được khởi tạo khi khởi động từ mã hóa ngôn ngữ và không thể sửa đổi sau này. Nếu bạn cần mã hóa một chuỗi thành mã hóa ngôn ngữ hiện tại, hãy sử dụng
Xem thêm
Chức năng
Mới trong phiên bản 3. 2
Đã thay đổi trong phiên bản 3. 6. Sử dụng trình xử lý lỗi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian808.
hỗ trợ wchar_t
wchar_t hỗ trợ cho các nền tảng hỗ trợ nó.
*PyUnicode_FromWideChar[const wchar_t *w, size]Return value: New reference. Part of the .
Tạo đối tượng Unicode từ bộ đệm wchar_t w có kích thước đã cho. Chuyển
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 làm kích thước cho biết hàm phải tự tính toán độ dài, sử dụng wcslen. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 khi thất bại. PyUnicode_AsWideChar[ *unicode , wchar_t *w, size]
Part of the .
Sao chép nội dung đối tượng Unicode vào bộ đệm wchar_t w. Hầu hết các ký tự có kích thước wchar_t được sao chép [ngoại trừ ký tự kết thúc null có thể ở cuối]. Trả về số lượng wchar_t ký tự được sao chép hoặc
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 trong trường hợp có lỗi. Lưu ý rằng chuỗi kết quả wchar_t* có thể hoặc không thể kết thúc bằng null. Người gọi có trách nhiệm đảm bảo rằng chuỗi wchar_t* bị chấm dứt null trong trường hợp này . Ngoài ra, hãy lưu ý rằng chuỗi wchar_t* có thể chứa các ký tự null, điều này sẽ khiến chuỗi bị cắt bớt khi sử dụng . wchar_t *PyUnicode_AsWideCharString[ *unicode, *size]
Part of the since version 3.7.
Chuyển đổi đối tượng Unicode thành chuỗi ký tự rộng. Chuỗi đầu ra luôn kết thúc bằng ký tự null. Nếu kích thước không phải là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, hãy viết số lượng ký tự rộng [không bao gồm ký tự kết thúc null ở cuối] vào *size. Lưu ý rằng chuỗi wchar_t kết quả có thể chứa các ký tự null, điều này sẽ khiến chuỗi bị cắt bớt khi được sử dụng với hầu hết các hàm C. Nếu kích thước là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 và wchar_t* chuỗi chứa ký tự null a được nâng lên.
Trả về bộ đệm được phân bổ bởi
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian848 [sử dụng để giải phóng nó] khi thành công. Khi có lỗi, trả về
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 và *size không xác định. Tăng a nếu cấp phát bộ nhớ không thành công
Mới trong phiên bản 3. 2
Đã thay đổi trong phiên bản 3. 7. Tăng a nếu kích thước là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 và wchar_t* chuỗi chứa các ký tự null.
Codec tích hợp
Python cung cấp một bộ codec tích hợp được viết bằng C để tăng tốc. Tất cả các codec này đều có thể sử dụng trực tiếp thông qua các chức năng sau
Nhiều API sau đây có hai đối số mã hóa và lỗi, đồng thời chúng có cùng ngữ nghĩa với các API của hàm tạo đối tượng chuỗi tích hợp
Đặt mã hóa thành
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 khiến mã hóa mặc định được sử dụng là UTF-8. Các cuộc gọi hệ thống tệp nên sử dụng để mã hóa tên tệp. Điều này sử dụng biến
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian87 trong nội bộ. Biến này nên được coi là chỉ đọc. trên một số hệ thống, nó sẽ là một con trỏ tới một chuỗi tĩnh, trên những hệ thống khác, nó sẽ thay đổi trong thời gian chạy [chẳng hạn như khi ứng dụng gọi setlocale]
Xử lý lỗi được đặt theo lỗi cũng có thể được đặt thành
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nghĩa là sử dụng xử lý mặc định được xác định cho codec. Xử lý lỗi mặc định cho tất cả các codec tích hợp là "nghiêm ngặt" [ được nâng lên]
Tất cả các codec đều sử dụng một giao diện tương tự. Chỉ những sai lệch so với những cái chung sau đây được ghi lại để đơn giản
Codec chung
Đây là các API codec chung
*PyUnicode_Decode[const char *s, size, const char *encoding, const char *errors]Return value: New reference. Part of the .
Tạo một đối tượng Unicode bằng cách giải mã byte kích thước của chuỗi được mã hóa s. mã hóa và lỗi có cùng ý nghĩa với các tham số cùng tên trong hàm tích hợp. Codec được sử dụng được tra cứu bằng sổ đăng ký codec Python. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_AsEncodedString[ *unicode, const char *encoding, const char *errors]
Return value: New reference. Part of the .
Mã hóa đối tượng Unicode và trả về kết quả dưới dạng đối tượng byte Python. mã hóa và lỗi có cùng ý nghĩa với các tham số cùng tên trong phương thức Unicode. Codec được sử dụng được tra cứu bằng sổ đăng ký codec Python. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Bộ giải mã UTF-8
Đây là các API codec UTF-8
*PyUnicode_DecodeUTF8[const char *s, size, const char *errors]Return value: New reference. Part of the .
Tạo một đối tượng Unicode bằng cách giải mã byte kích thước của chuỗi được mã hóa UTF-8 s. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_DecodeUTF8Stateful[const char *s, size, const char *errors, *consumed]
Return value: New reference. Part of the .
Nếu tiêu thụ là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, cư xử như. Nếu mức tiêu thụ không phải là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, thì các chuỗi byte UTF-8 không đầy đủ ở cuối sẽ không được coi là lỗi. Các byte đó sẽ không được giải mã và số byte đã được giải mã sẽ được lưu trữ trong tiêu thụ *PyUnicode_AsUTF8String[ *unicode]
Return value: New reference. Part of the .
Mã hóa đối tượng Unicode bằng UTF-8 và trả về kết quả dưới dạng đối tượng byte Python. Xử lý lỗi là "nghiêm ngặt". Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệconst char *PyUnicode_AsUTF8AndSize[ *unicode, *size]
Part of the since version 3.10.
Trả về một con trỏ tới mã hóa UTF-8 của đối tượng Unicode và lưu trữ kích thước của biểu diễn được mã hóa [tính bằng byte] trong kích thước. Đối số kích thước có thể là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86; . Bộ đệm được trả về luôn có thêm một byte null được thêm vào [không bao gồm trong kích thước], bất kể có bất kỳ điểm mã null nào khác hay không
Trong trường hợp có lỗi,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 được trả về với một bộ ngoại lệ và không có kích thước nào được lưu trữ
Điều này lưu trữ biểu diễn UTF-8 của chuỗi trong đối tượng Unicode và các lệnh gọi tiếp theo sẽ trả về một con trỏ tới cùng một bộ đệm. Người gọi không chịu trách nhiệm giải phóng bộ đệm. Bộ đệm bị giải phóng và các con trỏ tới nó trở nên không hợp lệ khi đối tượng Unicode được thu gom rác
Mới trong phiên bản 3. 3
Đã thay đổi trong phiên bản 3. 7. Kiểu trả về hiện tại là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian871 thay vì
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian872.
Đã thay đổi trong phiên bản 3. 10. Chức năng này là một phần của.
const char *PyUnicode_AsUTF8[ *unicode]As , but does not store the size.
Mới trong phiên bản 3. 3
Đã thay đổi trong phiên bản 3. 7. Kiểu trả về hiện tại là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian871 thay vì
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian872.
Bộ giải mã UTF-32
Đây là các API codec UTF-32
*PyUnicode_DecodeUTF32[const char *s, size, const char *errors, int *byteorder]Return value: New reference. Part of the .
Giải mã byte kích thước từ chuỗi bộ đệm được mã hóa UTF-32 và trả về đối tượng Unicode tương ứng. lỗi [nếu không phải ____886] xác định việc xử lý lỗi. Nó mặc định là "nghiêm ngặt"
Nếu thứ tự byte không phải là ____886, bộ giải mã bắt đầu giải mã bằng cách sử dụng thứ tự byte đã cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian
Nếu
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian878 bằng 0 và bốn byte đầu tiên của dữ liệu đầu vào là dấu thứ tự byte [BOM], bộ giải mã sẽ chuyển sang thứ tự byte này và BOM không được sao chép vào chuỗi Unicode kết quả. Nếu
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian878 là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 hoặc
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21, bất kỳ dấu thứ tự byte nào được sao chép vào đầu ra
Sau khi hoàn thành, *byteorder được đặt thành thứ tự byte hiện tại ở cuối dữ liệu đầu vào
Nếu byteorder là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, codec bắt đầu ở chế độ thứ tự gốc
Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_DecodeUTF32Stateful[const char *s, size, const char *errors, int *byteorder, *consumed]
Return value: New reference. Part of the .
Nếu tiêu thụ là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, cư xử như. Nếu tiêu thụ không phải là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, sẽ không coi các chuỗi byte UTF-32 không đầy đủ ở cuối [chẳng hạn như một số byte không chia hết cho bốn] là lỗi. Các byte đó sẽ không được giải mã và số byte đã được giải mã sẽ được lưu trữ trong tiêu thụ *PyUnicode_AsUTF32String[ *unicode]
Return value: New reference. Part of the .
Trả về chuỗi byte Python bằng mã hóa UTF-32 theo thứ tự byte gốc. Chuỗi luôn bắt đầu bằng dấu BOM. Xử lý lỗi là "nghiêm ngặt". Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Codec UTF-16
Đây là các API codec UTF-16
*PyUnicode_DecodeUTF16[const char *s, size, const char *errors, int *byteorder]Return value: New reference. Part of the .
Giải mã byte kích thước từ chuỗi bộ đệm được mã hóa UTF-16 và trả về đối tượng Unicode tương ứng. lỗi [nếu không phải ____886] xác định việc xử lý lỗi. Nó mặc định là "nghiêm ngặt"
Nếu thứ tự byte không phải là ____886, bộ giải mã bắt đầu giải mã bằng cách sử dụng thứ tự byte đã cho
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian
Nếu
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian878 bằng 0 và hai byte đầu tiên của dữ liệu đầu vào là dấu thứ tự byte [BOM], bộ giải mã sẽ chuyển sang thứ tự byte này và BOM không được sao chép vào chuỗi Unicode kết quả. Nếu
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian878 là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 hoặc
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21, thì bất kỳ dấu thứ tự byte nào cũng được sao chép vào đầu ra [nơi nó sẽ dẫn đến ký tự
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian895 hoặc
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian896]
Sau khi hoàn thành,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian878 được đặt thành thứ tự byte hiện tại ở cuối dữ liệu đầu vào
Nếu byteorder là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, codec bắt đầu ở chế độ thứ tự gốc
Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_DecodeUTF16Stateful[const char *s, size, const char *errors, int *byteorder, *consumed]
Return value: New reference. Part of the .
Nếu tiêu thụ là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, cư xử như. Nếu mức tiêu thụ không phải là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, sẽ không coi các chuỗi byte UTF-16 không đầy đủ ở cuối [chẳng hạn như số byte lẻ hoặc cặp thay thế phân tách] là lỗi. Các byte đó sẽ không được giải mã và số byte đã được giải mã sẽ được lưu trữ trong tiêu thụ *PyUnicode_AsUTF16String[ *unicode]
Return value: New reference. Part of the .
Trả về chuỗi byte Python bằng mã hóa UTF-16 theo thứ tự byte gốc. Chuỗi luôn bắt đầu bằng dấu BOM. Xử lý lỗi là "nghiêm ngặt". Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Bộ giải mã UTF-7
Đây là các API codec UTF-7
*PyUnicode_DecodeUTF7[const char *s, size, const char *errors]Return value: New reference. Part of the .
Tạo một đối tượng Unicode bằng cách giải mã byte kích thước của chuỗi được mã hóa UTF-7 s. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_DecodeUTF7Stateful[const char *s, size, const char *errors, *consumed]
Return value: New reference. Part of the .
Nếu tiêu thụ là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, cư xử như. Nếu tiêu thụ không phải là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, các phần cơ sở UTF-7 cơ sở 64 không đầy đủ ở cuối sẽ không được coi là lỗi. Các byte đó sẽ không được giải mã và số byte đã được giải mã sẽ được lưu trữ trong tiêu thụ
Codec thoát Unicode
Đây là các API codec “Unicode Escape”
*PyUnicode_DecodeUnicodeEscape[const char *s, size, const char *errors]Return value: New reference. Part of the .
Tạo một đối tượng Unicode bằng cách giải mã các byte kích thước của chuỗi được mã hóa Unicode-Escape s. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_AsUnicodeEscapeString[ *unicode]
Return value: New reference. Part of the .
Mã hóa đối tượng Unicode bằng Unicode-Escape và trả về kết quả dưới dạng đối tượng byte. Xử lý lỗi là "nghiêm ngặt". Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Raw-Unicode-Escape Codec
Đây là các API codec "Tẩu thoát Unicode thô"
*PyUnicode_DecodeRawUnicodeEscape[const char *s, size, const char *errors]Return value: New reference. Part of the .
Tạo đối tượng Unicode bằng cách giải mã byte kích thước của chuỗi được mã hóa Raw-Unicode-Escape s. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_AsRawUnicodeEscapeString[ *unicode]
Return value: New reference. Part of the .
Mã hóa đối tượng Unicode bằng Raw-Unicode-Escape và trả về kết quả dưới dạng đối tượng byte. Xử lý lỗi là "nghiêm ngặt". Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Codec Latin-1
Đây là các API codec Latin-1. Latin-1 tương ứng với 256 thứ tự Unicode đầu tiên và chỉ những thứ này mới được codec chấp nhận trong quá trình mã hóa
*PyUnicode_DecodeLatin1[const char *s, size, const char *errors]Return value: New reference. Part of the .
Tạo một đối tượng Unicode bằng cách giải mã byte kích thước của chuỗi mã hóa Latin-1 s. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_AsLatin1String[ *unicode]
Return value: New reference. Part of the .
Mã hóa đối tượng Unicode bằng Latin-1 và trả về kết quả dưới dạng đối tượng byte Python. Xử lý lỗi là "nghiêm ngặt". Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Bộ giải mã ASCII
Đây là các API codec ASCII. Chỉ chấp nhận dữ liệu ASCII 7-bit. Tất cả các mã khác tạo ra lỗi
*PyUnicode_DecodeASCII[const char *s, size, const char *errors]Return value: New reference. Part of the .
Tạo một đối tượng Unicode bằng cách giải mã byte kích thước của chuỗi được mã hóa ASCII s. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_AsASCIIString[ *unicode]
Return value: New reference. Part of the .
Mã hóa đối tượng Unicode bằng ASCII và trả về kết quả dưới dạng đối tượng byte Python. Xử lý lỗi là "nghiêm ngặt". Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Codec bản đồ ký tự
Codec này đặc biệt ở chỗ nó có thể được sử dụng để triển khai nhiều codec khác nhau [và đây thực tế là những gì đã được thực hiện để có được hầu hết các codec tiêu chuẩn có trong gói
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian217]. Codec sử dụng ánh xạ để mã hóa và giải mã các ký tự. Các đối tượng ánh xạ được cung cấp phải hỗ trợ giao diện ánh xạ
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian218;
Đây là các API codec ánh xạ
*PyUnicode_DecodeCharmap[const char *data, size, *mapping, const char *errors]Return value: New reference. Part of the .
Tạo một đối tượng Unicode bằng cách giải mã các byte kích thước của chuỗi s được mã hóa bằng cách sử dụng đối tượng ánh xạ đã cho. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Nếu ánh xạ là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, giải mã Latin-1 sẽ được áp dụng. Ánh xạ khác phải ánh xạ thứ tự byte [số nguyên trong phạm vi từ 0 đến 255] thành chuỗi Unicode, số nguyên [sau đó được hiểu là thứ tự Unicode] hoặc
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian221. Các byte dữ liệu chưa được ánh xạ – những byte gây ra , cũng như những byte được ánh xạ tới
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian221,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian224 hoặc
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian225, được coi là ánh xạ không xác định và gây ra lỗi *PyUnicode_AsCharmapString[ *unicode, *mapping]
Return value: New reference. Part of the .
Mã hóa đối tượng Unicode bằng cách sử dụng đối tượng ánh xạ đã cho và trả về kết quả dưới dạng đối tượng byte. Xử lý lỗi là "nghiêm ngặt". Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Đối tượng ánh xạ phải ánh xạ số nguyên thứ tự Unicode thành đối tượng byte, số nguyên trong phạm vi từ 0 đến 255 hoặc
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian221. Thứ tự ký tự chưa được ánh xạ [thứ gây ra a ] cũng như được ánh xạ tới
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian221 được coi là "ánh xạ không xác định" và gây ra lỗi
API codec sau đây đặc biệt ở chỗ ánh xạ Unicode sang Unicode
*PyUnicode_Translate[ *str, *table, const char *errors]Return value: New reference. Part of the .
Dịch một chuỗi bằng cách áp dụng bảng ánh xạ ký tự cho chuỗi đó và trả về đối tượng Unicode kết quả. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ
Bảng ánh xạ phải ánh xạ số nguyên thứ tự Unicode thành số nguyên thứ tự Unicode hoặc
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian221 [gây ra việc xóa ký tự]
Các bảng ánh xạ chỉ cần cung cấp giao diện
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian218; . Các thứ tự ký tự chưa được ánh xạ [những thứ gây ra a ] không bị ảnh hưởng và được sao chép nguyên trạng
lỗi có ý nghĩa thông thường đối với codec. Nó có thể là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 cho biết sử dụng xử lý lỗi mặc định
Bộ giải mã MBCS cho Windows
Đây là các API mã hóa MBCS. Chúng hiện chỉ khả dụng trên Windows và sử dụng bộ chuyển đổi Win32 MBCS để thực hiện chuyển đổi. Lưu ý rằng MBCS [hoặc DBCS] là một lớp mã hóa, không chỉ là một. Mã hóa đích được xác định bởi cài đặt người dùng trên máy chạy codec
*PyUnicode_DecodeMBCS[const char *s, size, const char *errors]Return value: New reference. Part of the on Windows since version 3.7.
Tạo một đối tượng Unicode bằng cách giải mã byte kích thước của chuỗi mã hóa MBCS s. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_DecodeMBCSStateful[const char *s, size, const char *errors, *consumed]
Return value: New reference. Part of the on Windows since version 3.7.
Nếu tiêu thụ là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, cư xử như. Nếu tiêu thụ không phải là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, sẽ không giải mã byte dẫn đầu theo sau và số byte đã được giải mã sẽ được lưu trữ trong tiêu thụ *PyUnicode_AsMBCSString[ *unicode]
Return value: New reference. Part of the on Windows since version 3.7.
Mã hóa một đối tượng Unicode bằng MBCS và trả về kết quả dưới dạng đối tượng byte Python. Xử lý lỗi là "nghiêm ngặt". Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ *PyUnicode_EncodeCodePage[int code_page, *unicode, const char *errors]
Return value: New reference. Part of the on Windows since version 3.7.
Mã hóa đối tượng Unicode bằng trang mã được chỉ định và trả về đối tượng byte Python. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 nếu codec đưa ra ngoại lệ. Sử dụng trang mã
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian242 để lấy bộ mã hóa MBCS
Mới trong phiên bản 3. 3
Phương pháp & Slots
Phương thức và chức năng khe cắm
Các API sau đây có khả năng xử lý các đối tượng và chuỗi Unicode trên đầu vào [chúng tôi gọi chúng là các chuỗi trong phần mô tả] và trả về các đối tượng hoặc số nguyên Unicode khi thích hợp
Tất cả đều trả về
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86 hoặc
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 nếu xảy ra ngoại lệ *PyUnicode_Concat[ *trái, *right]
Return value: New reference. Part of the .
Kết hợp hai chuỗi tạo ra một chuỗi Unicode mới
*PyUnicode_Split[ *s, *sep, maxsplit]Return value: New reference. Part of the .
Tách một chuỗi đưa ra danh sách các chuỗi Unicode. Nếu sep là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian86, việc tách sẽ được thực hiện ở tất cả các chuỗi con khoảng trắng. Mặt khác, sự phân chia xảy ra tại dấu phân cách đã cho. Tối đa việc chia tách maxsplit sẽ được thực hiện. Nếu âm, không có giới hạn nào được đặt. Dấu phân cách không được bao gồm trong danh sách kết quả *PyUnicode_Splitlines[ *s, int keepend]
Return value: New reference. Part of the .
Tách một chuỗi Unicode khi ngắt dòng, trả về một danh sách các chuỗi Unicode. CRLF được coi là ngắt một dòng. Nếu keepend là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7, các ký tự ngắt dòng không được bao gồm trong chuỗi kết quả *PyUnicode_Join[ *dấu phân cách, *seq]
Return value: New reference. Part of the .
Tham gia một chuỗi các chuỗi bằng cách sử dụng dấu tách đã cho và trả về chuỗi Unicode kết quả
PyUnicode_Tailmatch[ *str , *substr, start, end, int direction]Part of the .
Trả về ________ 921 nếu chuỗi con khớp với ________ 9248 ở đầu đuôi đã cho [hướng ==
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 có nghĩa là thực hiện khớp tiền tố, hướng ==
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 khớp hậu tố], ngược lại là
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian7. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 nếu xảy ra lỗi PyUnicode_Find[ *str , *substr, start, end, int direction]
Part of the .
Trả về vị trí đầu tiên của chất nền trong
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian248 bằng cách sử dụng hướng đã cho [hướng ==
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 có nghĩa là thực hiện tìm kiếm xuôi, hướng ==
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 tìm kiếm ngược]. Giá trị trả về là chỉ số của trận đấu đầu tiên; PyUnicode_FindChar[ *str , ch, start, end, int direction]
Part of the since version 3.7.
Trả về vị trí đầu tiên của ký tự ch trong
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian248 bằng cách sử dụng hướng đã cho [hướng ==
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian21 có nghĩa là thực hiện tìm kiếm xuôi, hướng ==
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 tìm kiếm ngược]. Giá trị trả về là chỉ số của trận đấu đầu tiên;
Mới trong phiên bản 3. 3
Đã thay đổi trong phiên bản 3. 7. bắt đầu và kết thúc hiện được điều chỉnh để hoạt động giống như
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian248. PyUnicode_Count[ *str , *substr, start, end]
Part of the .
Trả về số lần xuất hiện không trùng lặp của chất nền trong
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian248. Trả lại
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 nếu xảy ra lỗi *PyUnicode_Replace[ *str, *substr, *replstr, maxcount]
Return value: New reference. Part of the .
Thay thế tối đa số lần xuất hiện tối đa của chuỗi con trong chuỗi bằng thay thế và trả về đối tượng Unicode kết quả. maxcount ==
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 có nghĩa là thay thế tất cả các lần xuất hiệnint PyUnicode_Compare[ *left, *right]
Part of the .
So sánh hai chuỗi và trả về ________ 10, ________ 87, _______ 921 lần lượt nhỏ hơn, bằng và lớn hơn
Hàm này trả về
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 khi bị lỗi, vì vậy người ta nên gọi để kiểm tra lỗiint PyUnicode_CompareWithASCIIString[ *uni, const char *string]
Part of the .
So sánh một đối tượng Unicode, uni, với chuỗi và trả về ________ 10, ________ 87, _______ 921 lần lượt là nhỏ hơn, bằng và lớn hơn. Tốt nhất là chỉ chuyển các chuỗi được mã hóa ASCII, nhưng hàm diễn giải chuỗi đầu vào là ISO-8859-1 nếu nó chứa các ký tự không phải ASCII
Chức năng này không đưa ra ngoại lệ
*PyUnicode_RichCompare[ *left, *right, int op]Return value: New reference. Part of the .
Rich so sánh hai chuỗi Unicode và trả về một trong các chuỗi sau
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian
86 trong trường hợp một ngoại lệ đã được đưa ra*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian
276 hoặc*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian
277 để so sánh thành công*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian
278 trong trường hợp kiểu kết hợp không xác định
Các giá trị có thể có của op là ________ 9279, ________ 9280, ________ 9281, ________ 9282,
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian283 và
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian284 *PyUnicode_Format[ *định dạng, *args]
Return value: New reference. Part of the .
Trả về một đối tượng chuỗi mới từ định dạng và args;
int PyUnicode_Contains[ *vùng chứa, *element]Part of the .
Kiểm tra xem phần tử có được chứa trong vùng chứa hay không và trả về true hoặc false tương ứng
phần tử phải ép buộc một chuỗi Unicode một phần tử.
*byteorder == -1: little endian *byteorder == 0: native order *byteorder == 1: big endian0 được trả lại nếu có lỗivoid PyUnicode_InternInPlace[ **string]
Part of the .
Thực tập đối số * chuỗi tại chỗ. Đối số phải là địa chỉ của biến con trỏ trỏ đến đối tượng chuỗi Python Unicode. Nếu có một chuỗi nội bộ hiện có giống với *string, thì nó đặt *string cho nó [giảm số tham chiếu của đối tượng chuỗi cũ và tăng số tham chiếu của đối tượng chuỗi nội], nếu không thì nó để nguyên *string và . [Làm rõ. mặc dù có rất nhiều cuộc thảo luận về số lượng tham chiếu, hãy coi chức năng này là trung lập về số lượng tham chiếu; . ]
*PyUnicode_InternFromString[const char *v]Return value: New reference. Part of the .
Một sự kết hợp của và , trả về một đối tượng chuỗi Unicode mới đã được thực hiện hoặc một tham chiếu mới ["sở hữu"] cho một đối tượng chuỗi đã được thực hiện trước đó có cùng giá trị