Wie erfolgt die Ausgabe mehrere Byte-Zeichen normalerweise in C / C ++ Konsolenanwendung?
-
27-09-2019 - |
Frage
printf("%s\n", multibytestring);
Standardmäßig wird die Multi-Byte-Zeichen wie ???
in der Konsole angezeigt werden, wie kann ich das Problem beheben?
Lösung
Ich vermute, Windows und dass Sie Multi-Byte-Zeichen bedeuten und nicht breit Zeichen.
Stellen Sie sicher, dass _MBCS
definiert ist. Versuchen Sie fordern setlocale
und dann _setmbcp
:
setlocale(LC_ALL, "japanese");
_setmbcp(_MB_CP_LOCALE);
Danach sollte es hoffentlich funktionieren.
Andere Tipps
Sie wollen „% ls“ für Breitzeichenketten. Ist das, was Sie nach?
Hier ist eine vollständigere Antwort:
- Sie können mit wprintf zur Ausgabe von 16-Bit-Strings standardmäßig mit "% s"
- Sie können „% ls“ oder „% hs“ verwenden, um explizit die Zeichen / String Breite für einzelne Argumente angeben, unabhängig von printf Variante
- Siehe auch: http://msdn.microsoft.com/en-us/ Bibliothek / 56e442dc.aspx Referenz docs der MS
Wenn Sie sich fragen, über UTF8-Zeichen rechts nicht erscheint, ist es wahrscheinlich plattformspezifischen (abhängig von der Codepage / für die Konsole Handling). Sie sollten für die Ausgabe UTF8 als ASCII-fähig sein, aber das Display in der Lage, müssen UTF8 korrekt zu handhaben, und Sie können die entsprechende Codepage oder andere Umgebungseinstellung gesetzt (nicht sicher, ob dies, denke ich, es ist app / Plattform-spezifische ).
Versuchen Sie diese:
wprintf("%s\n", multibytestring);