إرجاع الأحرف اليابانية عبر char* في Excel XLOPER

StackOverflow https://stackoverflow.com/questions/374670

  •  22-08-2019
  •  | 
  •  

سؤال

أقوم باسترداد الأحرف اليابانية من مصدر بيانات وأريد إرجاع هذه البيانات إلى 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top