Создать элемент для объекта в расширении Python C просто с базовым типом char *
, используя определение T_STRING
в объявлении PyMemberDef
.
Почему не существует эквивалента для wchar_t *
? А если на самом деле есть один, что это?
, например
struct object
содержит char *text
PyMemberDef
массив имеет {"text", T_STRING, offsetof(struct object, text), READONLY, "This is a normal character string."}
против чего-то вроде
struct object
содержит wchar_t *wtext
PyMemberDef
массив имеет {"wtext", T_WSTRING, offsetof(struct object, wtext), READONLY, "This is a wide character string"}
Я понимаю, что что-то вроде PyUnicode_AsString()
и связанные с ним методы можно использовать для кодирования данных в UTF-8, сохранения их в базовой строке символов и последующего декодирования, но для этого потребуется обертка универсального * Методы / функции 1030 * и setattr
с теми, которые учитывают закодированный текст, и это не очень полезно, когда вам нужны массивы символов фиксированного размера элемента в структуре и не хотите эффективное количество символов, которые могут быть сохранены в это меняться.