You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行实现UTF-8编码值与Unicode码点的互转?

如何通过命令行实现UTF-8编码值与Unicode码点的互转?

嘿,刚好碰到过类似的需求,给你分享几个实用的命令行方法,分两种情况来解决你的问题:

1. 将UTF-8十六进制值转成Unicode码点

不管你的输入是连续的十六进制字符串(比如e28ca5)还是带空格分隔的(比如e2 8c a5),都可以用下面的方法处理:

处理带空格的输入

先把空格去掉,再转成原始字节,最后提取Unicode码点:

echo -n "e2 8c a5" | tr -d ' ' | xxd -r -p | python3 -c "import sys; print('%04x' % ord(sys.stdin.read()))"
  • tr -d ' ':去掉输入里的空格,把e2 8c a5变成e28ca5
  • xxd -r -p:把十六进制字符串还原成对应的UTF-8字节
  • 后面的Python代码:读取字节转成字符,再获取它的Unicode码点,以4位十六进制格式输出,结果就是2325

处理无空格的输入

如果输入本来就是连续的十六进制,直接跳过去空格的步骤即可:

echo -n "e28ca5" | xxd -r -p | python3 -c "import sys; print('%04x' % ord(sys.stdin.read()))"

2. 将Unicode码点转成UTF-8十六进制值

反过来,把Unicode码点(比如2325)转成UTF-8的十六进制,也有两种输出格式可选:

输出连续的十六进制字符串

printf '\u2325' | xxd -p
  • printf '\u2325':根据Unicode码点输出对应的UTF-8字符
  • xxd -p:把字符的字节转换成连续的十六进制字符串,结果就是e28ca5

输出带空格分隔的十六进制

如果需要和od输出格式一致的空格分隔形式,可以用sed处理:

printf '\u2325' | xxd -p | sed 's/\(..\)/\1 /g; s/ $//'
  • sed命令的作用是每两个字符后加一个空格,最后去掉末尾多余的空格,输出结果就是e2 8c a5

备注:内容来源于stack exchange,提问作者Ray Butterworth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:55:30