2010-12-22 7 views
3

Art trivialer Sache, aber ... Ich mag japanische Zeichen mit Normalpapier C von hexadezimalprintf UTF8-Zeichen mit printf von Hexadezimal Ints

Von this table, ich weiß, dass das erste Zeichen in der Tabelle drucken, あ's Entität ist & # 12353 und seine Hex-Entity ist x3041, etc.

Aber wie verwende ich diese beiden Zahlen, um alle Zeichen in der Befehlszeile gedruckt zu bekommen?

Antwort

3

Wenn Ihr Terminal auf UTF-8 gesetzt ist und das Gebietsschema richtig eingestellt ist, können Sie schreiben:

char s[]="あ"; 

Sie auch

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

(der letzte ist die Unicode UTF-8 können versuchen, Codierung für "あ"), und dann nur printf("%s",s);

+0

Ich glaube, die UTF-8 für '0x3041' ist eigentlich' 0xe3 0x81 0x81'. – caf

+0

Hm ... "あ" ist U + 3042 HIRAGANA BRIEF A UTF-8: e3 81 82 UTF-16BE: 3042 Dezimal: & # 12354, ich denke, vielleicht hat er es falsch verstanden, oder das Symbol ist falsch. Ich benutze die "Unicode" -App in Linux schneiden und Einfügen des Symbols aus dem Browser ..., aber auf jeden Fall, wenn es U + 3041 HIRAGANA BRIEF KLEIN A, dann ja, du hast Recht und UTF-8: e3 81 81 –

3

Wenn __STDC_ISO_10646__ definiert ist, wchar_t ist in Unicode, und Sie können wie etwas tun:

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