La différence entre les figures 1 et 2 est manifestement attribuable à un mauvais réglage du logiciel d'affichage, en l'occurrence Thunderbird. Essayons d'être plus précis.
On constate que dans les deux cas les caractères ASCII sont reproduits sans changement, mais que les nombreuses lettres porteuses de signes diacritiques de la fig. 2 apparaissent systématiquement sous la forme de séquences de deux caractères dans la fig. 1. Ceci fait soupçonner un codage d'origine en UTF-8, où les caractères en question sont représentés par deux octets, interprété selon un code à 8 bits (probablement Windows 1252 puisqu'on nous précise que le logiciel tourne sous Windows XP localisé en France). Pour s'en convaincre, il suffit d'examiner quelques exemples en utilisant l'Annexe 2 (tables Latin-1 et Latin Extended-A).
Les lettres diacritées qui apparaissent se répartissent en deux groupes : les voyelles portant un accent aigu (en tchèque, marque de longueur) qui appartiennent à la table Latin-1, et les lettres "typiquement tchèques" qui se trouvent dans la table Latin Extended-A. Les premières ont des numéros Unicode qui tiennent dans un octet, de la forme 0x00xy, où x = E ou F (ce sont toutes des minuscules), les secondes ont des numéros qui dépassent l'octet, de la forme 0x01xy, où x est compris entre 0 et 7, avec exactement 9 bits "utiles".
En répartissant les 8 ou 9 bits utiles dans la matrice UTF-8 à deux octets : 110abcde 10fghijkprogU.c:24:26: warning: character constant too long for its typeRien ne va plus ! En revanche, la chaîne-message est à présent imprimée correctement, sans points d'interrogation ...
progU.c: In function `main':
progU.c:24: warning: comparison is always false due to limited range of data type
progU.c:24:49: warning: character constant too long for its type
progU.c:24: warning: comparison is always false due to limited range of data type
Le fichier progU.c contient 0 occurrence(s) du caractère < œ>