Cómo múltiples caracteres de un byte de salida normalmente en aplicaciones C / C ++ consola?
-
27-09-2019 - |
Pregunta
printf("%s\n", multibytestring);
Por defecto, los caracteres de múltiples bytes se mostrará como ???
en la consola, ¿cómo puedo solucionarlo?
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);