Comment afficher plusieurs caractères d'octets normalement dans l'application c / c ++ console?

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

Question

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

Par défaut, les caractères multi-octets sera affiché comme ??? dans la console, comment puis-je résoudre ce problème?

Était-ce utile?

La solution

Je devine que Windows et que vous voulez dire des caractères multi-octets et non pas larges caractères.

Assurez-vous que _MBCS est défini. Essayez d'appeler setlocale puis _setmbcp:

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

Après cela, il devrait, espérons excellent travail.

Autres conseils

Vous voulez « % ls » pour les chaînes de caractères larges. Est-ce que vous êtes après?

Voici une réponse plus complète:

  • Vous pouvez utiliser wprintf à des chaînes de sortie 16 bits par défaut en utilisant « % s »
  • Vous pouvez utiliser "% ls" ou "% hs" pour spécifier explicitement la largeur char / chaîne pour des arguments individuels, quelle que soit la variante printf
  • Voir: http://msdn.microsoft.com/en-us/ bibliothèque / 56e442dc.aspx pour les documents de référence MS

Si vous demandez sur les caractères UTF8 ne figurant pas droit, il est probablement spécifique à la plateforme (en fonction du codepage / manutention pour la console). Vous devriez être en mesure de sortie UTF8 comme ASCII, mais l'affichage devra être capable de gérer UTF8 correctement, et vous devrez peut-être définir la page de code appropriée ou d'autres paramètres de l'environnement (pas trop sûr à ce sujet, je pense qu'il est app / spécifique de la plate-forme ).

Essayez ceci:

wprintf("%s\n", multibytestring);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top