表情符号似乎是使用 U+xxxxx 的格式指定的,
其中每个 x 都是十六进制数字。
例如,U+1F615是个官方 Unicode 联盟代码为了“困惑的脸”
答案1
UTF-8
是一个可变长度编码统一码。它被设计为 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个字节。
将十六进制转换为八进制:
0373025
.从末尾开始,一次剥离 2 个八进制数字,得到八进制值序列:
037
030
025
。如果八进制值少于预期的字节数,请在开头添加额外的 0:
000
037
030
025
。对于除第一个之外的所有内容,添加
0200
以获取:000
0237
0230
0225
。对于第一个,
0300
如果预期长度是 2,0340
如果是 3,或者0360
如果是 4,则添加,以获得:360
0237
0230
0225
。
现在写成八进制转义字符串:\360\237\230\225
。如果需要,可以选择转换回十六进制。