питонисты,
Я пытаюсь написать расширение Python на C, которое передает большое количество строк C с кодировкой UNICODE UTF-16 с нулевым завершением в мое приложение Python. Строки UNICODE из моей библиотеки C гарантированно всегда будут 16-битными. Я НЕ использую wchar_t в моей библиотеке C в LINUX из-за того, что размер wchar_t может варьироваться.
Я нашел много функций (PyUnicode_AsUTF8String, PyString_FromStringAndSize, PyString_FromString и т. д.), которые делают именно то, что я хочу, но все эти функции предназначены для представления 8-битных символов/строк.
В документации Python (http://docs.python.org/howto/unicode.html) говорится:
«Под капотом Python представляет строки Unicode как 16- или 32-битные целые числа, в зависимости от того, как был скомпилирован интерпретатор Python».
Я действительно стремлюсь избежать потери производительности при преобразовании всех моих строк C UTF-16 в строки C UTF-8 только для целей интерфейса Python, особенно в Windows, если интерпретатор Python также использует 16-битный "под капотом".
Любая идея, как решить эту проблему, высоко ценится.
Спасибо, Томас