إرجاع الأحرف اليابانية عبر char* في Excel XLOPER
سؤال
أقوم باسترداد الأحرف اليابانية من مصدر بيانات وأريد إرجاع هذه البيانات إلى Excel في XLOPER.أنا أستخدم الإصدار الياباني من Excel 2003 (وبالتالي XLOPERs وليس 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;
يتم تعيين المعلمة pszReturn إلى XLOPER.المشكلة التي أواجهها هي أن "アフリカの女王" يتم عرضها كـ "ƒAƒtƒŠƒJ‚Ì—‰¤" في Excel.
يؤدي تعيين صفحة الرموز يدويًا إلى 932 إلى الحصول على نفس النتائج مثل CP_THREAD_ACP لذلك أعتقد أن هذا الجزء صحيح.
أي مساعدة سيكون موضع تقدير كبير.
المحلول
خطأ المستخدم!
الكود أعلاه جيد.المشكلة هي أن Excel كان يستخدم صفحة الرموز الخاطئة.لم أقم بتعيين لغة البرامج التي لا تحتوي على Unicode على اللغة اليابانية في لوحة التحكم.
يعمل الرمز الآن مع الإصدار الإنجليزي من Excel أيضًا.
لقد كان يومًا ونصفًا قضيناه جيدًا..
نصائح أخرى
وA شار * هو تسلسل بايت، تفسر استخدام محارف الحالي. أن تكون بريكوسي، وهذا هو محارف المستخدمة من قبل الطرف القيام التفسير. في هذه الحالة، Execl وتلقي محارف أن <م> يجب م> تفسيره باستخدام مخطط الشفرة 932، ولكن بدلا من اكسل يستخدم مخطط الشفرة آخر.
والحل، كما هو الحال دائما هو يونيكود، في Excel ممثلة XLOPER12