Как конвертировать в Юникоде Django в C ++ std :: string

Я разрабатываю приложение на C ++ с WWW-интерфейсом в Django.
До сих пор у меня есть рабочий фреймворк на C ++ с оболочкой Boost.Python, скомпилированной в общий объект в Linux.

Сейчас я пытаюсь запустить этот фреймворк в Django. Когда я передаю строку из формы «CharField», я получаю эту ошибку:

Python argument types in
CoreSystem.setOutput(CoreSystem, unicode)
did not match C++ signature:
setOutput(CoreSystem {lvalue}, std::string)

Ответственный за это код здесь:

form = AnalyzeForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
s.setOutput(cd["output"])

где s это объект CoreSystem. Если я наберу это так:

s.setOutput("DatabaseOutput")

это работает отлично. Я также использовал str (cd [«output»]), но после этого ничего не происходит.

Я использую Django 1.4.1 и Python 2.7.3

0

Решение

Вы можете использовать encode метод для преобразования строки Unicode в строку байтов перед отправкой ее в код C ++, который ожидает строку:

s.setOutput(cd["output"].encode("utf-8"))

UTF-8 кодировка является разумным значением по умолчанию для строк Unicode. Если cd["output"] уже является строкой ASCII, кодировка не изменит ее; если он содержит двоичные данные, вы получите исключение.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector