Comment afficher plusieurs caractères d'octets normalement dans l'application c / c ++ console?
-
27-09-2019 - |
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?
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);