Frage

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

Standardmäßig wird die Multi-Byte-Zeichen wie ??? in der Konsole angezeigt werden, wie kann ich das Problem beheben?

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top