C++ 调用 python 传入参数的编码问题
话说字符编码真是一个坑啊 ,同意的 随便评论个 666~~
问题:写一个项目,用python 调用XXX api接口 (接口要求传入的值必须是utf-8编码 )写一个函数 ,然后用c++程序再调用python 写好的函数。当把值从c++ 传如python时报错!
原因:vs编译器 在中文环境中是gbk编码 直接把gbk传进去 肯定错了 ヾ(×× ) ツ
解决:在python 脚本中 将传进去的 gbk编码的参数转成 utf-8 。
import sys
reload(sys)
sys.setdefaultencoding("utf-8") #当我们没有指明解码方式,python 就会使用 sys.setdefaultencoding() 指明的方式来 #解码
def youdao(text): #传入的参数text为gbk编码
textx=text.decode('gbk').encode('utf-8') #将gbk编码转utf-8 编码
.............
return
ps:为什么不在c++里转码?
1. c++ 转码,我特么不会 ,网上的真心不靠谱。。有靠谱的方式 请评论 告我一下
2.最重要的是应为python转码方便,而且python作为c++程序的扩展程序,还是适应主程序的编码方式好。假如你要调用python中的这个函数100次,总不会把c++中的参数在c++中转码100次再传给python函数吧 哈哈哈哈φ(゜▽゜*)♪
如果对返回值的处理有疑问,请移步我的另一篇文章 c++ 调用 python 函数中文返回值乱码