解决c++调用python中文乱码问题


Posted in Python onJuly 29, 2020

windows中文操作系统下,vs的c++项目默认编码是GB2312

python默认是utf-8编码

最好在c++程序顶上加:

#pragma execution_character_set("GB2312")

c++中的字符串一定就是gbk编码

传入python前要做编码转换

准备一个gbk转utf8的函数,如下(网上的):

string GbkToUtf8(const char* src_str)
    {
      int len = MultiByteToWideChar(CP_ACP, 0, src_str, -1, NULL, 0);
      wchar_t* wstr = new wchar_t[len + 1];
      memset(wstr, 0, len + 1);
      MultiByteToWideChar(CP_ACP, 0, src_str, -1, wstr, len);
      len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
      char* str = new char[len + 1];
      memset(str, 0, len + 1);
      WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
      string strTemp = str;
      if (wstr) delete[] wstr;
      if (str) delete[] str;
      return strTemp;
    }

示例性代码:

#pragma execution_character_set("GB2312")
#include <stdlib.h>
#include <Windows.h>   
#include <iostream>
#include <Python.h>
#include <string>
#include <atlstr.h>

using namespace System;
using namespace System::Runtime::InteropServices;
using namespace System::Collections::Generic;
using namespace System::Diagnostics;
using namespace System::Threading;
using namespace std;

int main()
{  
  const char* name = "东方红1号";
  Py_Initialize();//初始化python
  PyRun_SimpleString("import sys");
  PyRun_SimpleString("sys.path.append('./')");
  PyObject* pModule = PyImport_ImportModule("hello");
  PyObject* pFunc1 = PyObject_GetAttrString(pModule, "sayhello");   
  PyObject* pArgs = PyTuple_New(1);
  PyObject* pV1 = Py_BuildValue("s", GbkToUtf8(name).c_str());      
  PyTuple_SetItem(pArgs, 0, pV1);
  PyObject* result = PyObject_CallObject(pFunc1, pArgs);
  Py_Finalize();
  return 0;

到此这篇关于解决c++调用python中文乱码问题的文章就介绍到这了,更多相关c++调用python中文乱码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
两个使用Python脚本操作文件的小示例分享
Aug 27 Python
玩转python爬虫之URLError异常处理
Feb 17 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
Python实现点云投影到平面显示
Jan 18 Python
Python使用re模块验证危险字符
May 21 Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 Python
浅谈keras.callbacks设置模型保存策略
Jun 18 Python
python 8种必备的gui库
Aug 27 Python
Python 实现简单的客户端认证
Jul 29 #Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 #Python
学python爬虫能做什么
Jul 29 #Python
Python 创建TCP服务器的方法
Jul 28 #Python
Python实现画图软件功能方法详解
Jul 28 #Python
Python绘图之柱形图绘制详解
Jul 28 #Python
Python如何定义接口和抽象类
Jul 28 #Python
You might like
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
Python日志模块logging简介
2015/04/13 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
用python实现刷点击率的示例代码
2019/02/21 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS