Domanda

Io sono il recupero dei caratteri giapponesi da una fonte di dati e voglio restituire questo dati in Excel in un XLOPER. Sto usando una versione giapponese di Excel 2003 (da qui XLOPERs e non XLOPER12s).

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;

Il parametro pszReturn è assegnato a un XLOPER. Il problema che ho è che “ア フ リ カ の 女王” viene visualizzato come “ƒAƒtƒŠƒJ,Ì- ‰ ¤” in Excel.

Impostazione manuale della pagina di codice per 932 produce gli stessi risultati come CP_THREAD_ACP quindi penso che quella parte è corretta.

Qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

Errore Utente!

Il codice di cui sopra è buono. Il problema è che Excel stava usando la pagina di codice errato. Non avevo impostare la lingua per i programmi non Unicode a Giapponese nel Pannello di controllo.

Il codice ora lavora per la versione inglese di Excel troppo.

E 'stato un giorno e mezzo spesi bene ...

Altri suggerimenti

Un char * è una sequenza di byte, interpretato utilizzando dell'attuale set. Per essere precose, che è il set di caratteri utilizzato dal partito facendo l'interpretazione. In questo caso, Execl sta ricevendo un insieme di caratteri che dovrebbe essere interpretato utilizzando tabella codici 932, ma invece Excel utilizza un'altra tabella codici.

La soluzione, come sempre è Unicode, in Excel rappresentata da XLOPER12

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top