Документация Python неофициальный перевод

unicode.md

892 строк · 69.1 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.6/c-api/unicode.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты Unicode и кодеки89## Объекты Unicode1011### Тип Unicode1213Это основные типы объектов Unicode, используемые в реализации Unicode в Python:1415**`Py_UNICODE`**1617Этот тип представляет тип хранения, который используется внутри Python в качестве основы для хранения порядковых номеров символов Unicode. В стандартной сборке Python используется 16-битный тип для1819[`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE)2021, и значения Unicode хранятся внутри в UCS2. Также возможна сборка Python с UCS4 (большинство современных дистрибутивов Linux поставляются с UCS4-сборками Python). В таких сборках используется 32-битный тип для2223[`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE)2425, и данные Unicode хранятся внутри в UCS4. На платформах, где2627`wchar_t`2829доступен и совместим с выбранным вариантом сборки Unicode Python,3031[`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE)3233является псевдонимом typedef для3435`wchar_t`3637для улучшения совместимости с нативной платформой. На всех остальных платформах3839[`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE)4041является псевдонимом typedef для4243`unsigned short`4445(UCS2) или4647`unsigned long`4849(UCS4).5051Обратите внимание, что сборки Python с UCS2 и UCS4 не являются двоично совместимыми. Учитывайте это при написании расширений или интерфейсов.5253**`PyUnicodeObject`**5455Этот подтип5657[`PyObject`](https://python-all.ru/2.6/c-api/structures.html#PyObject)5859представляет объект Unicode в Python.6061**[PyTypeObject](https://python-all.ru/2.6/c-api/type.html#PyTypeObject) `PyUnicode_Type`**6263Этот экземпляр6465[`PyTypeObject`](https://python-all.ru/2.6/c-api/type.html#PyTypeObject)6667представляет тип Python Unicode. Он доступен из кода Python как6869`unicode`7071и7273`types.UnicodeType`7475.7677Следующие API на самом деле являются макросами C и могут использоваться для быстрых проверок и доступа к внутренним данным Unicode объектов только для чтения:7879**int `PyUnicode_Check`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**8081Возвращает true, если объект *o* является объектом Unicode или экземпляром подтипа Unicode.8283Изменено в версии 2.2: Теперь допускаются подтипы.8485**int `PyUnicode_CheckExact`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**8687Возвращает true, если объект *o* является объектом Unicode, но не экземпляром подтипа.8889Новое в версии 2.2.9091**Py\_ssize\_t `PyUnicode_GET_SIZE`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**9293Возвращает размер объекта. *o* должен быть [`PyUnicodeObject`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicodeObject) (не проверяется).9495Изменено в версии 2.5:Эта функция возвращала тип `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.9697**Py\_ssize\_t `PyUnicode_GET_DATA_SIZE`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**9899Возвращает размер внутреннего буфера объекта в байтах. *o* должен быть [`PyUnicodeObject`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicodeObject) (не проверяется).100101Изменено в версии 2.5:Эта функция возвращала тип `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.102103**[Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE)\* `PyUnicode_AS_UNICODE`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**104105Возвращает указатель на внутренний буфер106107[`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE)108109объекта.110111*o*112113должен быть114115[`PyUnicodeObject`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicodeObject)116117(не проверяется).118119**const char\* `PyUnicode_AS_DATA`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**120121Возвращает указатель на внутренний буфер объекта.122123*o*124125должен быть126127[`PyUnicodeObject`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicodeObject)128129(не проверяется).130131**int `PyUnicode_ClearFreeList`()**132133Очищает список свободных элементов. Возвращает общее количество освобождённых элементов.134135Новое в версии 2.6.136137### Свойства символов Unicode138139Unicode предоставляет множество различных свойств символов. Наиболее востребованные из них доступны через следующие макросы, которые сопоставляются с функциями на C в зависимости от конфигурации Python.140141**int `Py_UNICODE_ISSPACE`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**142143Возвращает 1 или 0 в зависимости от того, является ли144145*ch*146147пробельным символом.148149**int `Py_UNICODE_ISLOWER`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**150151Возвращает 1 или 0 в зависимости от того, является ли152153*ch*154155символом нижнего регистра.156157**int `Py_UNICODE_ISUPPER`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**158159Возвращает 1 или 0 в зависимости от того, является ли160161*ch*162163символом верхнего регистра.164165**int `Py_UNICODE_ISTITLE`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**166167Возвращает 1 или 0 в зависимости от того, является ли168169*ch*170171символом в регистре заголовка.172173**int `Py_UNICODE_ISLINEBREAK`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**174175Возвращает 1 или 0 в зависимости от того, является ли176177*ch*178179символом разрыва строки.180181**int `Py_UNICODE_ISDECIMAL`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**182183Возвращает 1 или 0 в зависимости от того, является ли184185*ch*186187десятичной цифрой.188189**int `Py_UNICODE_ISDIGIT`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**190191Возвращает 1 или 0 в зависимости от того, является ли192193*ch*194195цифровым символом.196197**int `Py_UNICODE_ISNUMERIC`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**198199Возвращает 1 или 0 в зависимости от того, является ли200201*ch*202203числовым символом.204205**int `Py_UNICODE_ISALPHA`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**206207Возвращает 1 или 0 в зависимости от того, является ли208209*ch*210211буквенным символом.212213**int `Py_UNICODE_ISALNUM`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**214215Возвращает 1 или 0 в зависимости от того, является ли216217*ch*218219буквенно-цифровым символом.220221Эти API можно использовать для быстрых прямых преобразований символов:222223**[Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) `Py_UNICODE_TOLOWER`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**224225Возвращает символ226227*ch*228229, преобразованный в нижний регистр.230231**[Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) `Py_UNICODE_TOUPPER`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**232233Возвращает символ234235*ch*236237, преобразованный в верхний регистр.238239**[Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) `Py_UNICODE_TOTITLE`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**240241Возвращает символ242243*ch*244245, приведённый к регистру заголовка.246247**int `Py_UNICODE_TODECIMAL`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**248249Возвращает символ250251*ch*252253, преобразованный в десятичное положительное целое. Возвращает254255`-1`256257, если это невозможно. Этот макрос не вызывает исключений.258259**int `Py_UNICODE_TODIGIT`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**260261Возвращает символ262263*ch*264265, преобразованный в целое однозначное число. Возвращает266267`-1`268269, если это невозможно. Этот макрос не вызывает исключений.270271**double `Py_UNICODE_TONUMERIC`([Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *ch*)**272273Возвращает символ274275*ch*276277, преобразованный в double. Возвращает278279`-1.0`280281, если это невозможно. Этот макрос не вызывает исключений.282283### Простой Py\_UNICODE284285Для создания объектов Unicode и доступа к их базовым свойствам последовательности используйте следующие API:286287**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_FromUnicode`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*u*, Py\_ssize\_t *size*)**288289*Возвращаемое значение: новая ссылка.*290291Создаёт объект Unicode из буфера Py\_UNICODE *u* заданного размера. *u* может быть *NULL*, что делает содержимое неопределённым. Пользователь сам отвечает за заполнение нужных данных. Буфер копируется в новый объект. Если буфер не равен *NULL*, возвращаемое значение может быть общим объектом. Поэтому изменять полученный объект Unicode разрешается только когда *u* равен *NULL*.292293Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.294295**[Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE)\* `PyUnicode_AsUnicode`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**296297Возвращает указатель только для чтения на внутренний буфер298299[`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE)300301объекта Unicode;302303*NULL*304305, если306307*unicode*308309не является объектом Unicode.310311**Py\_ssize\_t `PyUnicode_GetSize`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**312313Возвращает длину объекта Unicode.314315Изменено в версии 2.5: эта функция возвращала тип `int`. Возможно, потребуется изменить код для корректной поддержки 64-битных систем.316317**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_FromEncodedObject`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*obj*, const char *\*encoding*, const char *\*errors*)**318319*Возвращаемое значение: новая ссылка.*320321Преобразует закодированный объект *obj* в объект Unicode и возвращает ссылку с увеличенным счётчиком ссылок.322323Строки и другие объекты, совместимые с символьными буферами, декодируются в соответствии с заданной кодировкой и с использованием обработки ошибок, определённой параметром errors. Оба параметра могут быть *NULL*, чтобы интерфейс использовал значения по умолчанию (подробнее см. следующий раздел).324325Все остальные объекты, включая объекты Unicode, вызывают установку [`TypeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.TypeError).326327API возвращает *NULL* при ошибке. Вызывающий отвечает за уменьшение счётчика ссылок возвращённых объектов.328329**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_FromObject`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*obj*)**330331*Возвращаемое значение: новая ссылка.*332333Shortcut for `PyUnicode_FromEncodedObject(obj, NULL, "strict")` which is used throughout the interpreter whenever coercion to Unicode is needed.334335Если платформа поддерживает `wchar_t` и предоставляет заголовочный файл wchar.h, Python может напрямую взаимодействовать с этим типом с помощью следующих функций. Поддержка оптимизируется, если собственный тип [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) Python идентичен системному `wchar_t`.336337### Поддержка wchar\_t338339wchar\_t support for platforms which support it:340341**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_FromWideChar`(const wchar\_t *\*w*, Py\_ssize\_t *size*)**342343*Возвращаемое значение: новая ссылка.*344345Создаёт объект Unicode из буфера `wchar_t` *w* заданного размера. Возвращает *NULL* в случае ошибки.346347Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.348349**Py\_ssize\_t `PyUnicode_AsWideChar`([PyUnicodeObject](https://python-all.ru/2.6/c-api/unicode.html#PyUnicodeObject) *\*unicode*, wchar\_t *\*w*, Py\_ssize\_t *size*)**350351Копирует содержимое объекта Unicode в буфер `wchar_t` *w*. Копируется не более *size* символов `wchar_t` (возможный завершающий нулевой символ не учитывается). Возвращает количество скопированных символов `wchar_t` или -1 в случае ошибки. Обратите внимание: результирующая строка `wchar_t` может как содержать, так и не содержать завершающий нулевой символ. Вызывающий должен убедиться, что строка `wchar_t` заканчивается нулевым символом, если это требуется приложению.352353Изменено в версии 2.5: эта функция возвращала тип `int` и использовала тип `int` для *size*. Возможно, потребуется изменить код для корректной поддержки 64-битных систем.354355## Встроенные кодеки356357Python предоставляет набор встроенных кодеков, написанных на C для скорости. Все эти кодеки могут использоваться напрямую через следующие функции.358359Многие из следующих API принимают два аргумента: encoding и errors. Эти параметры имеют ту же семантику, что и одноимённые параметры встроенного конструктора объекта Unicode [`unicode()`](https://python-all.ru/2.6/library/functions.html#unicode).360361Установка encoding в *NULL* приводит к использованию кодировки по умолчанию, которой является ASCII. Системные вызовы для работы с файлами должны использовать `Py_FileSystemDefaultEncoding` в качестве кодировки для имён файлов. Эту переменную следует считать доступной только для чтения: на одних системах это указатель на статическую строку, на других она может изменяться во время выполнения (например, когда приложение вызывает setlocale).362363Обработка ошибок задаётся параметром errors, который также может быть установлен в *NULL*, что означает использование обработки по умолчанию, определённой для кодера. Обработка ошибок по умолчанию для всех встроенных кодеров – «strict» (возбуждается [`ValueError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.ValueError)).364365Все кодеки используют похожий интерфейс. Для простоты документированы только отклонения от следующего общего описания.366367### Общие кодеки368369Это общие API кодеков:370371**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_Decode`(const char *\*s*, Py\_ssize\_t *size*, const char *\*encoding*, const char *\*errors*)**372373*Возвращаемое значение: новая ссылка.*374375Создаёт объект Unicode, декодируя *size* байт закодированной строки *s*. Параметры *encoding* и *errors* имеют тот же смысл, что и одноимённые параметры встроенной функции [`unicode()`](https://python-all.ru/2.6/library/functions.html#unicode). Используемый кодек находится через реестр кодеков Python. Возвращает *NULL*, если кодек возбудил исключение.376377Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.378379**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_Encode`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, const char *\*encoding*, const char *\*errors*)**380381*Возвращаемое значение: новая ссылка.*382383Кодирует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) указанного размера и возвращает объект строки Python. Параметры *encoding* и *errors* имеют тот же смысл, что и одноимённые параметры метода Unicode `encode()`. Используемый кодек ищется в реестре кодеков Python. Возвращает *NULL*, если кодек возбудил исключение.384385Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.386387**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsEncodedString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*, const char *\*encoding*, const char *\*errors*)**388389*Возвращаемое значение: новая ссылка.*390391Кодирует объект Unicode и возвращает результат в виде строки Python. Параметры *encoding* и *errors* имеют тот же смысл, что и одноимённые параметры метода Unicode `encode()`. Используемый кодек ищется в реестре кодеков Python. Возвращает *NULL*, если кодек возбудил исключение.392393### Кодеки UTF-8394395Это API кодеков UTF-8:396397**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeUTF8`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**398399*Возвращаемое значение: новая ссылка.*400401Создаёт объект Unicode путём декодирования *size* байт строки, закодированной в UTF-8, *s*. Возвращает *NULL*, если кодек возбудил исключение.402403Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.404405**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeUTF8Stateful`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*, Py\_ssize\_t *\*consumed*)**406407*Возвращаемое значение: новая ссылка.*408409Если *consumed* равно *NULL*, ведёт себя как [`PyUnicode_DecodeUTF8()`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicode_DecodeUTF8). Если *consumed* не равно *NULL*, завершающие неполные последовательности байт UTF-8 не будут считаться ошибкой. Эти байты не будут декодированы, а количество декодированных байт будет сохранено в *consumed*.410411Новое в версии 2.4.412413Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.414415**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeUTF8`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**416417*Возвращаемое значение: новая ссылка.*418419Кодирует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) указанного размера с использованием UTF-8 и возвращает объект строки Python. Возвращает *NULL*, если кодек возбудил исключение.420421Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.422423**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsUTF8String`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**424425*Возвращаемое значение: новая ссылка.*426427Кодирует объект Unicode с использованием UTF-8 и возвращает результат в виде строки Python. Обработка ошибок – «strict». Возвращает *NULL*, если кодек возбудил исключение.428429### Кодеки UTF-32430431Это API кодеков UTF-32:432433**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeUTF32`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*, int *\*byteorder*)**434435Декодирует *length* байт из строки буфера, закодированной в UTF-32, и возвращает соответствующий объект Unicode. Параметр *errors* (если не *NULL*) определяет обработку ошибок. По умолчанию – «strict».436437Если *byteorder* не равен *NULL*, декодер начинает декодирование с использованием заданного порядка байтов:438439```c440*byteorder == -1: little endian441*byteorder == 0:  native order442*byteorder == 1:  big endian443```444445Если `*byteorder` равен нулю, и первые четыре байта входных данных являются маркером порядка байт (BOM), декодер переключается на этот порядок байт, и BOM не копируется в результирующую строку Unicode. Если `*byteorder` равен `-1` или `1`, любой маркер порядка байт копируется в выходные данные.446447После завершения *\*byteorder* устанавливается в текущий порядок байтов в конце входных данных.448449В сборке с узким представлением кодовые точки за пределами BMP будут декодироваться как суррогатные пары.450451Если *byteorder* равен *NULL*, кодек запускается в режиме собственного порядка байтов.452453Возвращает *NULL*, если кодек сгенерировал исключение.454455Новое в версии 2.6.456457**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeUTF32Stateful`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*, int *\*byteorder*, Py\_ssize\_t *\*consumed*)**458459Если *consumed* равен *NULL*, ведёт себя как [`PyUnicode_DecodeUTF32()`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicode_DecodeUTF32). Если *consumed* не равен *NULL*, [`PyUnicode_DecodeUTF32Stateful()`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicode_DecodeUTF32Stateful) не будет считать неполные конечные последовательности байтов UTF-32 (например, количество байтов, не кратное четырём) ошибкой. Эти байты не будут декодированы, а количество декодированных байтов будет сохранено в *consumed*.460461Новое в версии 2.6.462463**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeUTF32`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, const char *\*errors*, int *byteorder*)**464465Возвращает объект Python bytes, содержащий значение Unicode-данных из *s*, закодированное в UTF-32. Вывод записывается в соответствии со следующим порядком байтов:466467```c468byteorder == -1: little endian469byteorder == 0:  native byte order (writes a BOM mark)470byteorder == 1:  big endian471```472473Если `0`, выходная строка всегда начинается с метки BOM Unicode (U+FEFF). В двух других режимах метка BOM не добавляется.474475Если *Py\_UNICODE\_WIDE* не определён, суррогатные пары будут выводиться как одна кодовая точка.476477Возвращает *NULL*, если кодек сгенерировал исключение.478479Новое в версии 2.6.480481**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsUTF32String`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**482483Возвращает строку Python, закодированную в UTF-32 с native порядком байтов. Строка всегда начинается с маркера BOM. Обработка ошибок – «strict». Возвращает *NULL*, если кодек вызвал исключение.484485Новое в версии 2.6.486487### Кодеки UTF-32488489Это API кодеков UTF-32:490491**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeUTF16`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*, int *\*byteorder*)**492493*Возвращаемое значение: новая ссылка.*494495Декодирует *length* байт из строки буфера, закодированной в UTF-16, и возвращает соответствующий объект Unicode. *errors* (если не *NULL*) задаёт обработку ошибок. По умолчанию – «strict».496497Если *byteorder* не равен *NULL*, декодер начинает декодирование с использованием заданного порядка байтов:498499```c500*byteorder == -1: little endian501*byteorder == 0:  native order502*byteorder == 1:  big endian503```504505Если `*byteorder` равен нулю и первые два байта входных данных являются меткой порядка байтов (BOM), декодер переключается на этот порядок байтов, и BOM не копируется в результирующую строку Unicode. Если `*byteorder` равен `-1` или `1`, любая метка порядка байтов копируется в выходные данные (в результате чего появится символ `\ufeff` или `\ufffe`).506507После завершения *\*byteorder* устанавливается в текущий порядок байтов в конце входных данных.508509Если *byteorder* равен *NULL*, кодек запускается в режиме собственного порядка байтов.510511Возвращает *NULL*, если кодек сгенерировал исключение.512513Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.514515**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeUTF16Stateful`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*, int *\*byteorder*, Py\_ssize\_t *\*consumed*)**516517*Возвращаемое значение: новая ссылка.*518519Если *consumed* равен *NULL*, ведёт себя как [`PyUnicode_DecodeUTF16()`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicode_DecodeUTF16). Если *consumed* не равен *NULL*, [`PyUnicode_DecodeUTF16Stateful()`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicode_DecodeUTF16Stateful) не будет считать неполные конечные последовательности байтов UTF-16 (например, нечётное количество байтов или разбитая суррогатная пара) ошибкой. Эти байты не будут декодированы, а количество декодированных байтов будет сохранено в *consumed*.520521Новое в версии 2.4.522523Изменено в версии 2.5: эта функция использовала тип `int` для *size* и тип `int *` для *consumed*. Возможно, потребуется изменить код для корректной поддержки 64-битных систем.524525**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeUTF16`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, const char *\*errors*, int *byteorder*)**526527*Возвращаемое значение: новая ссылка.*528529Возвращает объект строки Python, содержащий значение в кодировке UTF-16 для данных Unicode в *s*. Вывод записывается в следующем порядке байтов:530531```c532byteorder == -1: little endian533byteorder == 0:  native byte order (writes a BOM mark)534byteorder == 1:  big endian535```536537Если `0`, выходная строка всегда начинается с метки BOM Unicode (U+FEFF). В двух других режимах метка BOM не добавляется.538539Если *Py\_UNICODE\_WIDE* определён, одно значение [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) может быть представлено как суррогатная пара. Если он не определён, каждое значение [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) интерпретируется как символ UCS-2.540541Возвращает *NULL*, если кодек сгенерировал исключение.542543Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.544545**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsUTF16String`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**546547*Возвращаемое значение: новая ссылка.*548549Возвращает строку Python, закодированную в UTF-16 с native порядком байтов. Строка всегда начинается с маркера BOM. Обработка ошибок – «strict». Возвращает *NULL*, если кодек вызвал исключение.550551### Кодеки UTF-7552553Это API кодеков UTF-7:554555**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeUTF7`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**556557Создаёт объект Unicode путём декодирования558559*size*560561байт строки в кодировке UTF-7562563*s*564565. Возвращает566567*NULL*568569, если кодек сгенерировал исключение.570571**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeUTF8Stateful`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*, Py\_ssize\_t *\*consumed*)**572573Если574575*consumed*576577равен578579*NULL*580581, ведёт себя как582583[`PyUnicode_DecodeUTF7()`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicode_DecodeUTF7)584585. Если586587*consumed*588589не равен590591*NULL*592593, конечные неполные секции base-64 UTF-7 не будут считаться ошибкой. Эти байты не будут декодированы, а количество декодированных байтов будет сохранено в594595*consumed*596597.598599**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeUTF7`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, int *base64SetO*, int *base64WhiteSpace*, const char *\*errors*)**600601Кодирует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) заданного размера с использованием UTF-7 и возвращает объект Python bytes. Возвращает *NULL*, если кодек вызвал исключение.602603Если *base64SetO* не равно нулю, «Set O» (знаки препинания, не имеющие иного особого значения) будут закодированы в base-64. Если *base64WhiteSpace* не равно нулю, пробельные символы будут закодированы в base-64. Оба параметра установлены в ноль для кодека Python «utf-7».604605### Кодеки Unicode-Escape606607Это API кодеков «Unicode Escape»:608609**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeUnicodeEscape`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**610611*Возвращаемое значение: новая ссылка.*612613Создаёт объект Unicode путём декодирования *size* байт строки в кодировке Unicode-Escape *s*. Возвращает *NULL*, если кодек сгенерировал исключение.614615Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.616617**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeUnicodeEscape`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*)**618619*Возвращаемое значение: новая ссылка.*620621Кодирует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) заданного размера с использованием Unicode-Escape и возвращает объект строки Python. Возвращает *NULL*, если кодек вызвал исключение.622623Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.624625**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsUnicodeEscapeString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**626627*Возвращаемое значение: новая ссылка.*628629Кодирует объект Unicode с использованием Unicode-Escape и возвращает результат в виде строкового объекта Python. Обработка ошибок – «strict». Возвращает *NULL*, если кодек вызвал исключение.630631### Кодеки Raw-Unicode-Escape632633Это API кодеков «Raw Unicode Escape»:634635**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeRawUnicodeEscape`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**636637*Возвращаемое значение: новая ссылка.*638639Создаёт объект Unicode путём декодирования *size* байт строки *s*, закодированной в Raw-Unicode-Escape. Возвращает *NULL*, если кодек вызвал исключение.640641Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.642643**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeRawUnicodeEscape`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**644645*Возвращаемое значение: новая ссылка.*646647Кодирует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) заданного размера с помощью Raw-Unicode-Escape и возвращает строковый объект Python. Возвращает *NULL*, если кодек вызвал исключение.648649Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.650651**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsRawUnicodeEscapeString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**652653*Возвращаемое значение: новая ссылка.*654655Кодирует объект Unicode с использованием Raw-Unicode-Escape и возвращает результат в виде строкового объекта Python. Обработка ошибок – «strict». Возвращает *NULL*, если кодек вызвал исключение.656657### Кодеки Latin-1658659Это API кодеков Latin-1: Latin-1 соответствует первым 256 кодовым позициям Unicode, и только они принимаются кодеками при кодировании.660661**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeLatin1`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**662663*Возвращаемое значение: новая ссылка.*664665Создаёт объект Unicode путём декодирования *size* байт строки *s*, закодированной в Latin-1. Возвращает *NULL*, если кодек вызвал исключение.666667Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.668669**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeLatin1`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**670671*Возвращаемое значение: новая ссылка.*672673Кодирует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) заданного размера с помощью Latin-1 и возвращает строковый объект Python. Возвращает *NULL*, если кодек вызвал исключение.674675Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.676677**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsLatin1String`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**678679*Возвращаемое значение: новая ссылка.*680681Кодирует объект Unicode с помощью Latin-1 и возвращает результат в виде строкового объекта Python. Обработка ошибок – «strict». Возвращает *NULL*, если кодек вызвал исключение.682683### Кодеки ASCII684685Это API кодеков ASCII. Принимаются только 7-битные данные ASCII. Все остальные коды вызывают ошибки.686687**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeASCII`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**688689*Возвращаемое значение: новая ссылка.*690691Создаёт объект Unicode путём декодирования *size* байт строки *s*, закодированной в ASCII. Возвращает *NULL*, если кодек вызвал исключение.692693Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.694695**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeASCII`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**696697*Возвращаемое значение: новая ссылка.*698699Кодирует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) заданного размера с помощью ASCII и возвращает строковый объект Python. Возвращает *NULL*, если кодек вызвал исключение.700701Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.702703**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsASCIIString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**704705*Возвращаемое значение: новая ссылка.*706707Кодирует объект Unicode с помощью ASCII и возвращает результат в виде строкового объекта Python. Обработка ошибок – «strict». Возвращает *NULL*, если кодек вызвал исключение.708709### Кодеки с таблицей символов710711Это API кодеков отображения:712713Этот кодек особенный, так как его можно использовать для реализации множества разных кодеков (именно так и были получены большинство стандартных кодеков, входящих в пакет `encodings`). Кодек использует отображение для кодирования и декодирования символов.714715Отображения для декодирования должны сопоставлять отдельные строковые символы отдельным символам Unicode, целым числам (которые затем интерпретируются как кодовые точки Unicode) или None (что означает «неопределённое отображение» и вызывает ошибку).716717Отображения для кодирования должны сопоставлять отдельные символы Unicode отдельным строковым символам, целым числам (которые затем интерпретируются как кодовые точки Latin-1) или None (что означает «неопределённое отображение» и вызывает ошибку).718719Объекты отображения должны поддерживать только интерфейс отображения \_\_getitem\_\_.720721Если при поиске символа возникает LookupError, символ копируется как есть; это означает, что его порядковое значение будет интерпретироваться как кодовая точка Unicode или Latin-1 соответственно. Из-за этого отображения должны содержать только те соответствия, которые переводят символы в другие кодовые точки.722723**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeCharmap`(const char *\*s*, Py\_ssize\_t *size*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*mapping*, const char *\*errors*)**724725*Возвращаемое значение: новая ссылка.*726727Создаёт объект Unicode, декодируя *size* байт закодированной строки *s* с помощью заданного объекта *mapping*. Возвращает *NULL*, если кодек вызвал исключение. Если *mapping* равен *NULL*, выполняется декодирование Latin-1. В противном случае это может быть словарь, отображающий байты, или строка Unicode, которая интерпретируется как таблица поиска. Значения байтов, превышающие длину строки, и «символ» U+FFFE считаются «неопределённым отображением».728729Изменено в версии 2.4: Разрешена строка Unicode в качестве аргумента отображения.730731Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.732733**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeCharmap`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*mapping*, const char *\*errors*)**734735*Возвращаемое значение: новая ссылка.*736737Кодирует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) заданного размера, используя заданный *mapping* объект, и возвращает объект строки Python. Возвращает *NULL*, если кодек вызвал исключение.738739Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.740741**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsCharmapString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*mapping*)**742743*Возвращаемое значение: новая ссылка.*744745Кодирует объект Unicode с помощью заданного объекта *mapping* и возвращает результат в виде строкового объекта Python. Обработка ошибок – «strict». Возвращает *NULL*, если кодек вызвал исключение.746747Следующее API кодека особенное тем, что отображает Unicode в Unicode.748749**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_TranslateCharmap`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*table*, const char *\*errors*)**750751*Возвращаемое значение: новая ссылка.*752753Преобразует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) заданной длины, применяя к нему таблицу символов *table*, и возвращает полученный объект Unicode. Возвращает *NULL*, когда кодек вызвал исключение.754755Таблица *mapping* должна сопоставлять целочисленные кодовые точки Unicode целочисленным кодовым точкам Unicode или None (что приводит к удалению символа).756757Таблицам отображения достаточно реализовать интерфейс [`__getitem__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__getitem__); словари и последовательности подходят. Неотображённые коды символов (те, которые вызывают [`LookupError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.LookupError)) остаются без изменений и копируются как есть.758759Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.760761Это API кодеков MBCS. В настоящее время они доступны только в Windows и используют преобразователи Win32 MBCS для выполнения преобразований. Обратите внимание, что MBCS (или DBCS) – это класс кодировок, а не одна конкретная. Целевая кодировка определяется пользовательскими настройками на машине, где выполняется кодек.762763### Кодеки MBCS для Windows764765**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeMBCS`(const char *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**766767*Возвращаемое значение: новая ссылка.*768769Создаёт объект Unicode, декодируя *size* байтов строки, закодированной в MBCS, из *s*. Возвращает *NULL*, если кодек вызвал исключение.770771Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.772773**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_DecodeMBCSStateful`(const char *\*s*, int *size*, const char *\*errors*, int *\*consumed*)**774775Если *consumed* равен *NULL*, ведёт себя как [`PyUnicode_DecodeMBCS()`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicode_DecodeMBCS). Если *consumed* не равен *NULL*, то [`PyUnicode_DecodeMBCSStateful()`](https://python-all.ru/2.6/c-api/unicode.html#PyUnicode_DecodeMBCSStateful) не будет декодировать конечный ведущий байт, а количество декодированных байтов будет сохранено в *consumed*.776777Новое в версии 2.5.778779**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_EncodeMBCS`(const [Py\_UNICODE](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) *\*s*, Py\_ssize\_t *size*, const char *\*errors*)**780781*Возвращаемое значение: новая ссылка.*782783Кодирует буфер [`Py_UNICODE`](https://python-all.ru/2.6/c-api/unicode.html#Py_UNICODE) заданного размера, используя MBCS, и возвращает объект строки Python. Возвращает *NULL*, если кодек вызвал исключение.784785Изменено в версии 2.5: Раньше эта функция использовала тип `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.786787**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_AsMBCSString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*unicode*)**788789*Возвращаемое значение: новая ссылка.*790791Кодирует объект Unicode, используя MBCS, и возвращает результат в виде объекта строки Python. Обработка ошибок – «strict». Возвращает *NULL*, если кодек вызвал исключение.792793### Методы и слоты794795## Методы и слот-функции796797Следующие API могут обрабатывать объекты Unicode и строки на входе (в описаниях мы называем их строками) и возвращают объекты Unicode или целые числа по необходимости.798799Все они возвращают *NULL* или `-1` в случае исключения.800801**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_Concat`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*left*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*right*)**802803*Возвращаемое значение: новая ссылка.*804805Объединяет две строки, возвращая новую строку Unicode.806807**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_Split`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*s*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*sep*, Py\_ssize\_t *maxsplit*)**808809*Возвращаемое значение: новая ссылка.*810811Разделяет строку, возвращая список строк Unicode. Если sep равно *NULL*, разделение происходит по всем подстрокам пробельных символов. В противном случае разделение происходит по заданному разделителю. Будет выполнено не более *maxsplit* разделений. Если отрицательное, ограничение не устанавливается. Разделители не включаются в результирующий список.812813Изменено в версии 2.5: Эта функция использовала тип `int` для *maxsplit*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.814815**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_Splitlines`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*s*, int *keepend*)**816817*Возвращаемое значение: новая ссылка.*818819Разделяет строку Unicode по символам перевода строки и возвращает список строк Unicode. CRLF считается одним переносом строки. Если *keepend* равен 0, символы перевода строки не включаются в результирующие строки.820821**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_Translate`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*str*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*table*, const char *\*errors*)**822823*Возвращаемое значение: новая ссылка.*824825Переводит строку, применяя к ней таблицу отображения символов, и возвращает результирующий объект Unicode.826827Таблица отображения должна сопоставлять целочисленные коды Unicode другим целочисленным кодам Unicode или None (что приводит к удалению символа).828829Таблицам отображения достаточно реализовать интерфейс [`__getitem__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__getitem__); словари и последовательности подходят. Неотображённые коды символов (те, которые вызывают [`LookupError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.LookupError)) остаются без изменений и копируются как есть.830831*errors* имеет обычное для кодеков значение. Может быть *NULL*, что означает использование обработки ошибок по умолчанию.832833**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_Join`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*separator*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*seq*)**834835*Возвращаемое значение: новая ссылка.*836837Объединяет последовательность строк, используя заданный разделитель, и возвращает полученную строку Unicode.838839**int `PyUnicode_Tailmatch`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*str*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*substr*, Py\_ssize\_t *start*, Py\_ssize\_t *end*, int *direction*)**840841Возвращает 1, если *substr* совпадает с *str\[\*start*:*end*\] на заданном конце (*direction* == -1 означает поиск префикса, *direction* == 1 – поиск суффикса), и 0 в противном случае. Возвращает `-1`, если произошла ошибка.842843Изменено в версии 2.5: Эта функция использовала тип `int` для *start* и *end*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.844845**Py\_ssize\_t `PyUnicode_Find`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*str*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*substr*, Py\_ssize\_t *start*, Py\_ssize\_t *end*, int *direction*)**846847Возвращает первую позицию *substr* в *str\[\*start*:*end*\], используя заданное *direction* (*direction* == 1 означает прямой поиск, *direction* == -1 – обратный поиск). Возвращаемое значение – индекс первого совпадения; значение `-1` указывает, что совпадение не найдено, а `-2` указывает, что произошла ошибка и было установлено исключение.848849Изменено в версии 2.5: Эта функция использовала тип `int` для *start* и *end*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.850851**Py\_ssize\_t `PyUnicode_Count`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*str*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*substr*, Py\_ssize\_t *start*, Py\_ssize\_t *end*)**852853Возвращает количество непересекающихся вхождений *substr* в `str[start:end]`. Возвращает `-1`, если произошла ошибка.854855Изменено в версии 2.5: Эта функция возвращала тип `int` и использовала тип `int` для *start* и *end*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.856857**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_Replace`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*str*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*substr*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*replstr*, Py\_ssize\_t *maxcount*)**858859*Возвращаемое значение: новая ссылка.*860861Заменяет не более *maxcount* вхождений *substr* в *str* на *replstr* и возвращает результирующий объект Unicode. *maxcount* == -1 означает замену всех вхождений.862863Изменено в версии 2.5: Эта функция использовала тип `int` для *maxcount*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.864865**int `PyUnicode_Compare`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*left*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*right*)**866867Сравнивает две строки и возвращает -1, 0, 1 для случаев «меньше», «равно» и «больше» соответственно.868869**int `PyUnicode_RichCompare`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*left*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*right*, int *op*)**870871Выполняет расширенное сравнение двух строк unicode и возвращает одно из следующих значений:872873- `NULL` в случае возбуждения исключения874- [`Py_True`](https://python-all.ru/2.6/c-api/bool.html#Py_True) или [`Py_False`](https://python-all.ru/2.6/c-api/bool.html#Py_False) для успешных сравнений875- `Py_NotImplemented` в случае, если комбинация типов неизвестна876877Обратите внимание, что сравнения с `Py_EQ` и `Py_NE` могут вызвать [`UnicodeWarning`](https://python-all.ru/2.6/library/exceptions.html#exceptions.UnicodeWarning), если преобразование аргументов в Unicode завершится ошибкой с [`UnicodeDecodeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.UnicodeDecodeError).878879Возможные значения для *op*: `Py_GT`, `Py_GE`, `Py_EQ`, `Py_NE`, `Py_LT` и `Py_LE`.880881**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyUnicode_Format`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*format*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*args*)**882883*Возвращаемое значение: новая ссылка.*884885Возвращает новый строковый объект из *format* и *args*; это аналогично `format % args`. Аргумент *args* должен быть кортежем.886887**int `PyUnicode_Contains`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*container*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*element*)**888889Проверяет, содержится ли *element* в *container*, и возвращает true или false соответственно.890891*element* должен преобразовываться в односимвольную строку Unicode. Если произошла ошибка, возвращается `-1`.892