我有一个使用Python C / API来为数据库信息调用Python脚本的C ++程序,但是接收到的数据没有以正确的方式编码。这是在法国,因此我的数据包含重音符号和其他非英语字符。
在sys.defaultencoding设置为“ utf-8”的python终端中,示例:
>>> robin = 'testé'
>>> robin
'test\x82'
>>> print robin
testé
>>> str(robin)
'test\x82'
如果我打电话给:
PyString_AsString(PyObject_Repr(PyObject_GetAttrString(/*PyObject of my Py_Init*/, "robin")));
我得到一个充满以下内容的字符*:test \ x82
从中创建一个字符串或wstring会得到相同的结果。
我希望能够创建一个表示“testé”的字符串,并且我猜想首先要能够在python终端中正确输出变量,如下所示:
>>> robin = 'testé'
>>> robin
'testé'
我尝试了Django的encode()encode(),sys.setdefaultencoding,sys.stdout.encoding,甚至是一些force_text和force_bytes。似乎没有什么可以让我得到包含我实际字符的标准C ++字符串的。任何帮助将不胜感激。
仅供参考-Python 2.7,Windows 8 x64,VS2012和C ++ 9
编辑以回答评论:
>>> import sys
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('utf-8')
>>> sys.getdefaultencoding()
'utf-8'
>>> robin = 'testé'
>>> robin
'test\x82'
>>> print robin
testé
我只希望“打印”能够正确显示信息...
SMILET
BIG阳
相关分类