在受支持的平台上支持 wchar_t:
PyObject *PyUnicode_FromWideChar(const wchar_t *wstr, Py_ssize_t size)
返回值:新的引用。 属于 稳定 ABI.
根据给定的 size 的 wchar_t 缓冲区 wstr 创建一个 Unicode 对象。 传入 -1 作为 size 表示该函数必须使用 wcslen() 自动计算缓冲区长度。 失败时将返回 NULL。
Py_ssize_t PyUnicode_AsWideChar(PyObject *unicode, wchar_t *wstr, Py_ssize_t size)
属于 稳定 ABI.
将 Unicode 对象内容拷贝到 wchar_t 缓冲区 wstr 中。 至多拷贝 size 个 wchar_t 字符(不包括可能存在于末尾的空结束字符)。 返回拷贝的 wchar_t 字符数量或者在发生错误时返回 -1。 请注意结果 wchar_t* 字符可能有或没有表示结束的空值。 调用方需要负责在应用程序有些要求时确保 wchar_t* 字符串是以空值结束的。 此外,还要注意 wchar_t* 字符串可能包含空字符,这将导致在大多数 C 函数中使用时字符串被截断。
wchar_t *PyUnicode_AsWideCharString(PyObject *unicode, Py_ssize_t *size)
属于 稳定 ABI 自 3.7 版开始.
将 Unicode 对象转换为宽字符串。 输出字符串将总是以空字符结尾。 如果 size 不为 NULL,则会将宽字符的数量(不包括结尾空字符)写入到 *size 中。 请注意结果 wchar_t 字符串可能包含空字符,这将导致在大多数 C 函数中使用时字符串被截断。 如果 size 为 NULL 并且 wchar_t* 字符串包含空字符则将引发 ValueError。
成功时返回由 PyMem_New 分配的缓冲区(使用 PyMem_Free() 来释放它)。 发生错误时,则返回 NULL 并且 *size 将是未定义的。 如果内存分配失败则会引发 MemoryError。
在 3.2 版本加入.
在 3.7 版本发生变更: 如果 size 为 NULL 且 wchar_t* 字符串包含空字符则会引发 ValueError。 |