2010-12-22 7 views
3

de genre de chose triviale, mais ... Je veux imprimer des caractères japonais en utilisant C plaine de hexadécimalesprintf caractères UTF8 avec printf ints hexadécimaux

De this table, je sais que, le premier caractère de la table, あL'Entité est & # 12353 et son Entité Hex est x3041, etc.

Mais comment utiliser ces deux nombres pour imprimer tous les caractères dans la ligne de commande?

Répondre

3

Si votre terminal est réglé sur UTF-8 et locale est correctement définie, vous pouvez écrire:

char s[]="あ"; 

vous pouvez également essayer

char s[]={0xe3,0x81,0x82,0x0} 

(le dernier est le Unicode UTF-8 codant pour « あ »), et puis juste printf("%s",s);

+0

Je crois que l'UTF-8 pour '0x3041' est en fait' 0xe3 0x81 0x81'. – caf

+0

Hm ... "あ" est U + 3042 HIRAGANA LETTRE A UTF-8: e3 81 82 UTF-16BE: 3042 Décimal: & # 12354, je pense qu'il a peut-être tort, ou le symbole est faux. J'utilise l'application 'unicode' dans linux couper et coller le symbole depuis le navigateur ..., mais en tout cas, si c'est U + 3041 HIRAGANA LETTRE PETIT A, alors oui, vous avez raison et UTF-8: e3 81 81 –

3

Si __STDC_ISO_10646__ est défini, wchar_t est en Unicode, et vous pouvez faire quelque chose comme:

printf("%lc", (wchar_t)0x3041);