如何在命令行中转换UTF-8字符的打印十进制/八进制/十六进制/UTF-8表示?

3
另一个问题中,有人建议使用echo -e\0<sequence> 进行八进制转义,以及使用\x<sequence> 进行十六进制转义。例如:

echo -e "\\0302\\0241" --> ¡

那么,是否有一种简单的方法将UTF-8字符转换为打印的八进制/十六进制序列?

1个回答

3

没错 - 使用 hexdump 命令,就像这样:

$ echo -n i | hexdump

这将输出类似于以下内容:

0000000 0069                              
0000003

如果需要更格式化的内容,可以这样做:

$ echo ü | hexdump | awk '{print "\\x"toupper(substr($2,3,4)) "\\x"toupper(substr($2,0,2)) "\\x"toupper(substr($3,3,4))}' | head -1

这将会打印出这个:

\xC3\xBC\x0A

这段代码来自于这里:如何在Bash中输入一个4位Unicode字符?


2
太好了。对于八进制:echo ¡ | hexdump -b;十进制:echo ¡ | hexdump -d - Dhskjlkakdh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接