将文本从 Bash shell 转换为字节?

Convert text to bytes from Bash shell?

如何使用 Bash and/or 常用 Linux 命令行实用程序将文本字符串转换为 UTF-8 编码字节?例如,在 Python 中,可以这样做:

"Six of one, ½ dozen of the other".encode('utf-8')
b'Six of one, \xc2\xbd dozen of the other'

有没有办法在纯 Bash:

STR="Six of one, ½ dozen of the other"
<utility_or_bash_command_here> --encoding='utf-8' $STR
'Six of one, \xc2\xbd dozen of the other'

Perl 来拯救!

echo "$STR" | perl -pe 's/([^x[=10=]-\x7f])/"\x" . sprintf "%x", ord /ge'

/e 修饰符允许将代码包含到 s/// 替换的替换部分中,在这种情况下将 ord to hex via sprintf.

Python 救援!

alias encode='python3 -c "from sys import stdin; print(stdin.read().encode(\"utf-8\"))"'
root@kali-linux:~# echo "½ " | encode
b'\xc2\xbd \n'

此外,如果需要,您可以删除 b'' 和一些 sed/awk 东西。