私は単純な端末を介してArch Linuxを実行するためにAdobe Source Code Proフォントを使用しています。私のロケールがに正しく設定されていますLANG=en_US.UTF-8
。
トランプを表すUnicode文字を私の端末に印刷したいです。私はそれを使用しています参考用ウィキペディア。
カードスーツのUnicode文字はうまく機能します。たとえば、問題
$ printf "\u2660"
画面に黒いハートを印刷します。
しかし、特定のカードに問題があります。発行された
$ printf "\u1F0A1"
Ἂ1
スペードエースの代わりにシンボルを印刷
ベストアンサー1
help printf
解釈されたエスケープシーケンスに従いprintf(1)
、GNU printfのドキュメント説明する:
printf
ISO C 99で導入された2つの文字構文の説明:\u
16ビットUnicode(ISO / IEC 10646)文字の場合は、4桁の16進数で指定されていますヘヘ、\U
32ビットのUnicode文字の場合は、8桁の16進数で指定されます。はははは。 Unicode文字はロケール設定printf
に従って出力されます。LC_CTYPE
この構文は、U+0024($)、U+0040(@)、U+0060(`) を除いて U+0000… U+009F、U+D800… U + DFFF範囲のUnicode文字を指定できません。
Bashのマニュアルは同様のものを指定しますANSI C見積もりそしてecho
:
\uHHHH
値が16進値のUnicode(ISO / IEC 10646)文字はははは(1~4個の16進数)
\UHHHHHHHH
値が16進値のUnicode(ISO / IEC 10646)文字ハハハハハハハ(1~8桁の16進数)
つまり、\u
5桁の16進数では機能しません。それは\U
:
# printf "\u2660 \u1F0A1 \U1F0A1\n"
♠ Ἂ1