문제

데이터 소스에서 일본어 문자를 검색하고 있으며이 데이터를 Xloper에서 Excel로 반환하고 싶습니다. 나는 Excel 2003의 일본어 버전을 사용하고 있습니다 (따라서 xlopers가 아닌 xlopers).

wchar_t* pszW = OLE2W(bstrResult); //I have the data I am trying to copy in a CComBSTR

ULONG ulSize = ::WideCharToMultiByte( CP_THREAD_ACP, 0, pszW, -1, NULL, 0, NULL, NULL );                        

if ( ulSize )
{   
   char* tmp = new char[ulSize + 1];
   tmp[ulSize]='\0';
   ::WideCharToMultiByte( CP_THREAD_ACP, 0, pszW, -1, LPSTR( tmp ), ulSize, NULL, NULL );
   pszReturn = tmp;     
}
wchar_t* pwszOut = new wchar_t[bstrResult.Length () + 1];

//now turn it back to test that that the correct code page was used. For debugging purposes only!
::MultiByteToWideChar (CP_THREAD_ACP,0, LPSTR(pszReturn),-1,pwszOut,bstrResult.Length () + 1);

//pwszOut and bstrResult look the same in the debugger              
delete [] pwszOut;

PSZRETURN 매개 변수는 XLOPER에 할당됩니다. 내가 가진 문제는“アフリカ の 女王”가 Excel에서“ƒa ƒtızj;— ‰ ¤”로 표시된다는 것입니다.

코드 페이지를 932로 수동으로 설정하면 CP_THREAD_ACP와 동일한 결과가 발생하므로 해당 부분이 정확하다고 생각합니다.

모든 도움은 대단히 감사하겠습니다.

도움이 되었습니까?

해결책

사용자 오류!

위의 코드가 좋습니다. 문제는 Excel이 잘못된 코드 페이지를 사용하고 있다는 것입니다. 제어판에서 비공개 프로그램에 대한 언어를 일본어로 설정하지 않았습니다.

코드는 이제 Excel의 영어 버전에서도 작동합니다.

그것은 하루 반이 잘 보냈습니다 ...

다른 팁

char*는 현재 숯을 사용하여 해석되는 바이트 시퀀스입니다. 예정되어 있으면, 그것은 해석을하는 당사자가 사용하는 숯불입니다. 이 경우 EXECL은 ~해야 한다 CodePage 932를 사용하여 해석되지만 Excel은 다른 CodePage를 사용하고 있습니다.

xloper12로 표시되는 Excel에서 항상 유니 코드입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top