Saltar al contenido

Imprimir un símbolo Unicode en C

Después de de esta larga compilación de información pudimos solucionar esta dificultad que pueden tener algunos de nuestros usuarios. Te ofrecemos la solución y esperamos que te sea de gran apoyo.

Solución:

Dos problemas: en primer lugar, un wchar_t debe estar impreso con %lc formato, no %c. La segunda es que a menos que llames setlocale el conjunto de caracteres no está configurado correctamente, y probablemente obtenga ? en lugar de tu estrella. Sin embargo, el siguiente código parece funcionar:

#include 
#include 
#include 

int main() 
    setlocale(LC_CTYPE, "");
    wchar_t star = 0x2605;
    wprintf(L"%lcn", star);

Y para ncursessimplemente inicialice la configuración regional antes de la llamada a initscr.

Ya sea que esté utilizando stdio o ncurses, debe inicializar la configuración regional, como se indica en el manual de ncurses. De lo contrario, las codificaciones multibyte como UTF-8 no funcionan.

wprintw no necesariamente sabe sobre wchar_t (aunque puede usar el mismo subyacente printfesto depende de la plataforma y la configuración).

Con ncurses, mostraría un wchar_t de cualquiera de estas formas:

  • almacenarlo en un array de wchar_ty usando waddwstro
  • almacenándolo en un cchar_t estructura (con setcchar), y utilizando wadd_wch con eso como parámetro, o
  • convirtiendo el wchar_t a un multibyte stringy usando waddstr
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *