كيفية إخراج أحرف بايت متعددة عادة في تطبيق C/C ++ وحدة التحكم؟

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

سؤال

printf("%s\n", multibytestring);

بشكل افتراضي ، ستظهر الأحرف المتعددة البايت مثل ??? في وحدة التحكم ، كيف يمكنني إصلاحه؟

هل كانت مفيدة؟

المحلول

أنا أخمن Windows ، وأنك تعني الشخصيات متعددة البايت وليس الشخصيات الواسعة.

تأكد من أن _MBCS ويعرف. حاول الاتصال setlocale وثم _setmbcp:

setlocale(LC_ALL, "japanese");
_setmbcp(_MB_CP_LOCALE);

بعد ذلك يجب أن يعمل بشكل جيد.

نصائح أخرى

تريد "٪ LS" للسلاسل العريضة. هل هذا ما أنت عليه؟

إليك إجابة أكثر اكتمالا:

  • يمكنك استخدام WPRINTF لإخراج سلاسل 16 بت افتراضيًا باستخدام "٪ s"
  • يمكنك استخدام "٪ LS" أو "٪ HS" لتحديد عرض Char/String بشكل صريح للوسائط الفردية ، بغض النظر عن متغير PrintF
  • نرى: http://msdn.microsoft.com/en-us/library/56e442dc.aspx لمستندات مرجع MS

إذا كنت تسأل عن عدم ظهور أحرف UTF8 بشكل صحيح ، فمن المحتمل أن يكون ذلك خاصًا بالمنصة (يعتمد على codepage/التعامل مع وحدة التحكم). يجب أن تكون قادرًا على إخراج UTF8 مثل ASCII ، ولكن يجب أن تكون الشاشة قادرة على التعامل مع UTF8 بشكل صحيح ، وقد تحتاج ).

جرب هذا:

wprintf("%s\n", multibytestring);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top