Cómo múltiples caracteres de un byte de salida normalmente en aplicaciones C / C ++ consola?

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

Pregunta

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

Por defecto, los caracteres de múltiples bytes se mostrará como ??? en la consola, ¿cómo puedo solucionarlo?

¿Fue útil?

Solución

Estoy adivinando de Windows, y que quiere decir caracteres multi-byte y no caracteres de ancho.

Asegúrese de que se define _MBCS. Trate setlocale llamando y luego _setmbcp:

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

Después de que todo funciona correctamente, funcionan bien.

Otros consejos

quiere "% ls" para cadenas de caracteres anchos. Es eso lo que está buscando?

Aquí hay una respuesta más completa:

  • Se puede utilizar wprintf de salida cadenas de 16 bits por defecto utilizando "% s"
  • Puede utilizar "% ls" o "% hs" para especificar explícitamente el ancho char / cadena de argumentos individuales, independientemente de printf variante
  • Ver: http://msdn.microsoft.com/en-us/ biblioteca / 56e442dc.aspx de documentos de referencia de la Sra

Si usted está preguntando por caracteres UTF8 no aparece a la derecha, es probable que sea específico de la plataforma (en función de la página de códigos / manejo de la consola). Usted debe ser capaz de UTF8 salida como ASCII, pero la pantalla tendrá que ser capaz de manejar UTF-8 correctamente, y puede que tenga que configurar la página de códigos apropiados o ajuste otro ambiente (no demasiado seguro de esto, creo que es de aplicación / específico de la plataforma ).

Prueba esto:

wprintf("%s\n", multibytestring);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top