c++python 중국어 코드 호출 문제 해결

windows 중국어 운영 체제 에서 vs c+프로젝트 의 기본 인 코딩 은 GB 2312 입 니 다.
python 기본 값 은 utf-8 인 코딩 입 니 다.
c++프로그램 에 추가 하 는 것 이 좋 습 니 다:
#pragma execution_character_set("GB2312")
c++의 문자열 은 반드시 gbk 인 코딩 입 니 다.
python 에 들 어가 기 전에 인 코딩 변환 을 해 야 합 니 다.
gbk 에서 utf 8 로 전환 하 는 함 수 를 준비 하 십시오.다음 과 같 습 니 다.

 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 중국어 코드 호출 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기