栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

解决C++调用Python可执行文件时中文乱码问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决C++调用Python可执行文件时中文乱码问题

使用ShellExecuteEx调用Python可执行文件(exe)的过程中,传递中文路径时会产生乱码的问题,主要原因为该函数传递的参数为LPCWSTR,Python中无法处理。后改用ShellExecuteExA传递LPCSTR格式的参数,Python能够正常处理其中文路径。具体用法如下:

	try
	{
		SHELLEXECUTEINFOA sei = { 0 };
		sei.cbSize = sizeof(SHELLEXECUTEINFO);
		sei.fMask = SEE_MASK_NOCLOSEPROCESS;
		sei.hwnd = NULL;
		sei.lpVerb = "open";
		sei.lpFile = LPCSTR(exePath);
		sei.lpParameters = LPCSTR(params);
		sei.nShow = SW_HIDE;
		sei.hInstApp = NULL;
		printf("sei.lpFile: %sn", sei.lpFile);
		printf("sei.lpParameters: %sn", sei.lpParameters);

		//使用ShellExecuteExA解决向Python传中文时出现乱码的问题 
		if (ShellExecuteExA(&sei))//执行脚本
		{
			if (sei.hProcess)//以 SEE_MASK_NOCLOSEPROCESS 方式执行,执行成功会返回进程句柄hProcess
				WaitForSingleObject(sei.hProcess, INFINITE);//等待执行完毕
			else
				return -1;
		}
		else
		{
			return -1;
		}
	}
	catch (const std::exception& e)
	{
		printf("[Main process] Error: ", e.what());
		LOG(INFO) << e.what();
		return -2;
	}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号