Pergunta

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

Por padrão, os personagens de vários bytes aparecerão como ??? No console, como posso consertar isso?

Foi útil?

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top