Forum Programmation.c Linux ncurses emoticones

Posté par . Licence CC by-sa.
Tags : aucun
2
28
oct.
2017

Bonjour,

Je suis entrain de developper un programme sous ncurses,
et dans mon programme, j'aimerais afficher des emoticones, plus particulièrement celui , alors les emoticones s'affiche sous rxvt-unicode en fesant un copier/coller, mais en C99, il ne s'affiche pas.

$LANG = en_US.UTF-8
$TERM = rxvt-unicode

Par hasard, Vous aurez des pistes ?

Merci d'avance.

  • # Charset de l'éditeur

    Posté par . Évalué à 4.

    Normalement, le C doit reproduire fidèlement ce qui se trouve entre deux guillemets " " dans ton programme. Si ça ne fonctionne pas, c'est que soit tu utilises un compilateur VRAIMENT trop vieux, soit (ce qui est beaucoup plus probable) tu utilises un éditeur de texte qui ne travaille pas en UTF-8 par défaut, voire qui choisit de ne pas le faire pour le type de fichier que tu édites (ici un *.c) parce qu'il est configuré pour utiliser un autre charset par défaut pour ce type de listing.

    Du coup, la séquence doit bien être encodée dans ton programme, mais pas en UTF-8, si bien que lorsque ton application la restitue dans un terminal qui, lui, en attend, ça ne donne plus rien.

    Avec quoi développes-tu ?

    • [^] # Re: Charset de l'éditeur

      Posté par . Évalué à 1.

      Alors pour l'editeur de texte, j'utilise soit Pluma ou Vim, et concernant le compilateur, j'utilise gcc version 6.3.0 (ex : gcc -lncursesw test.c).

      J'ai verifier dans mon fichier .vimrc, les paramètres : 'set encoding=utf-8' et 'set fileencoding=utf8'.

      J'ai également, fais un test :

      echo '\u9801' = 頁
      echo '\u9801' | iconv -f utf-8 -t C99 = iconv: conversion to 'C99' is not supported

      • [^] # Re: Charset de l'éditeur

        Posté par . Évalué à 2.

        echo '\u9801' | iconv -f utf-8 -t C99 = iconv: conversion to 'C99' is not supported

        Ça paraît normal, C99 n'est pas un jeux de code de caractères (cf iconv -l).

  • # Avec wchar

    Posté par . Évalué à 4.

    Essaye comme ça :

    #include <stdio.h>
    #include <wchar.h>
    #include <locale.h>
    main()
    {    
    setlocale(LC_ALL, "");
    wchar_t s[] = L"頁";
    printf("%ls\n",s);
    }

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.