如何在Django中将unicode转换为C++std::string

How to convert in Django unicode to C++ std::string

本文关键字:C++std 转换 string unicode Django 中将      更新时间:2023-10-16

我在Django中用WWW接口用C++开发了一个应用程序。到目前为止,我已经在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

您可以使用encode方法将Unicode字符串转换为字节字符串,然后将其发送到需要字符串的C++代码:

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

UTF-8编码是Unicode字符串的合理默认值。如果cd["output"]已经是ASCII字符串,则编码不会更改它;如果它包含二进制数据,则会得到一个异常。