Domanda

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

Per impostazione predefinita i caratteri multi-byte apparirà come ??? nella console, come posso risolvere il problema?

È stato utile?

Soluzione

Sto cercando di indovinare di Windows, e che si intende caratteri multi-byte e non caratteri di larghezza.

Assicurarsi che _MBCS è definito. Prova a chiamare setlocale e poi _setmbcp:

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

Dopo che si spera che funzionino bene.

Altri suggerimenti

Si vuole "% ls" per le stringhe di caratteri estesi. E 'questo quello che stai dopo?

Ecco una risposta più completa:

  • È possibile utilizzare wprintf di uscita stringhe di 16 bit per default con "% s"
  • È possibile utilizzare "% ls" o "% hs" per specificare esplicitamente la larghezza car / stringa per i singoli argomenti, indipendentemente printf variante
  • See: http://msdn.microsoft.com/en-us/ biblioteca / 56e442dc.aspx per documenti di riferimento MS

Se stai chiedendo circa i caratteri UTF8 che non appare a destra, è probabilmente la piattaforma-specifici (in base alla tabella codici / movimentazione per la console). Si dovrebbe essere in grado di UTF8 uscita come ASCII, ma il display dovrà essere in grado di gestire correttamente UTF8, e potrebbe essere necessario impostare la tabella codici appropriata o l'impostazione altro ambiente (non troppo sicuro di questo, penso che sia app / piattaforma specifica ).

Prova questo:

wprintf("%s\n", multibytestring);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top