كيفية إخراج أحرف بايت متعددة عادة في تطبيق C/C ++ وحدة التحكم؟
-
27-09-2019 - |
سؤال
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);
لا تنتمي إلى StackOverflow