Como produzir vários caracteres de bytes normalmente no aplicativo de console C/C ++?
-
27-09-2019 - |
Pergunta
printf("%s\n", multibytestring);
Por padrão, os personagens de vários bytes aparecerão como ???
No console, como posso consertar isso?
Solução
Suponho que o Windows e que você quer dizer personagens de vários bytes e não personagens amplos.
Certifique -se disso _MBCS
é definido. Tente ligar setlocale
e depois _setmbcp
:
setlocale(LC_ALL, "japanese");
_setmbcp(_MB_CP_LOCALE);
Depois disso, espera -se funcionar bem.
Outras dicas
Você quer "%LS" para cordas de carros largos. É isso que você procura?
Aqui está uma resposta mais completa:
- Você pode usar o WPRINTF para produzir strings de 16 bits por padrão usando "%s"
- Você pode usar "%ls" ou "%hs" para especificar explicitamente a largura de char/string para argumentos individuais, independentemente da variante Printf
- Ver: http://msdn.microsoft.com/en-us/library/56e442dc.aspx Para os documentos de referência de MS
Se você está perguntando sobre os caracteres UTF8 que não aparecem corretamente, provavelmente é específico da plataforma (dependendo da correção/manuseio para o console). Você poderá produzir UTF8 como ASCII, mas a tela precisará ser capaz de lidar com o UTF8 corretamente, e pode ser necessário definir a sede de codificação apropriada ou outra configuração de ambiente (não tenho muita certeza disso, acho que é o aplicativo/plataforma específica ).
Experimente isso:
wprintf("%s\n", multibytestring);