絵文字はU + xxxxx形式を使用して指定されているようです。
ここで、各xは16進数です。
例えば、U+1F615~である公式Unicodeコンソーシアムコード「慌てる顔」について
答え1
UTF-8
可変長ですコーディングUnicode。これはASCIIの上位セットとして設計されています。バラよりウィキペディアエンコーディングの詳細。またはエンコードさ\x00 \x01 \xF6 \x15
れます。UCS-4BE
UTF-32BE
UnicodeコードポイントでUTF-8エンコーディングを取得するには、ロケールの文字マップがUTF-8であるとし(出力を参照locale charmap
)、次のようにします。
$ printf '\U1F615\n'
答え2
UTF-32(ビッグエンディアン)からUTF-8に変換する方法は次のとおりです。
$ confused=$(echo -ne "\x0\x01\xF6\x15" | iconv -f UTF-32BE -t UTF-8)
$ echo $confused
答え3
頭の中や紙でできる良い方法:
どのくらいのバイトがあるかを計算します。 U+0080 の下の値は 1 バイト、U+0800 の下の値は 2 バイト、U+10000 の下の値は 3 バイト、それ以外の場合は 4 バイトです。あなたの例では4バイトです。
16進数を8進数に変換する:
0373025
。最後から始めて一度に2つの8進数を削除すると、一連の8進値が生成されます
037
030
025
。8進値が予想バイト数より小さい場合は、先頭に0を追加します
000
037
030
025
。最初を除くすべての項目に
0200
get: を追加します000
0237
0230
0225
。最初の項目に
0300
予想される長さが2の場合、0340
3の場合、0360
4の場合を追加して、次のようになります360
0237
0230
0225
。
これで、8進エスケープ文字列で書かれています\360\237\230\225
。必要に応じて16進数に変換するオプションがあります。