我有一个代码点列表,例如 0x13000、0x1300A。我必须从 bash 打印相应的 Unicode 字符。我已经尝试使用在论坛中搜索到的其他命令来执行此操作(在 bash 中,如何将 Unicode 代码点 [0-9A-F] 转换为可打印字符?),但他们没有工作。
我试过了
echo -ne 'x13000/x130FF/' | iconv -f utf-16be
并且,在终端上使用 perl
perl -C -e 'print chr 0x130F0'
答案1
这分两步完成:
$ printf "$(printf '\\U%08x' 0x13000)\n"
答案2
使用perl
, 输出语言环境字符集中的字符:
perl -Mopen=locale -le 'print chr($_) for 0x13000 .. 0x130ff'
对于某些字符集(不是 UTF-8),我见过perl
错误的情况。或者,你可以这样做:
perl -e 'print pack("L>2", $_, 10) for 0x13000 .. 0x130FF' |
iconv -f UCS-4BE
让系统iconv
进行翻译(对于那些埃及象形文字,我不认为 UTF-8 之外的许多字符集会支持它们)。这相当于他们的zsh
/ 。bash
$'\UXXXXXXXX'
无论语言环境字符集如何,以 UTF-8 输出它们:
perl -CO -le 'print chr($_) for 0x13000 .. 0x130ff'
你的
perl -C -le 'print chr 0x130F0'
只要语言环境的字符集是 UTF-8 就可以工作(检查 的输出locale charmap
)。
它将输出该字符。现在,您还需要一种字体 埃及象形文字 E026字符,并且您的终端模拟器配置为使用该字体(如果您希望它显示在那里)。
在 Debian 及其衍生版本上,查看fonts-ancient-scripts
软件包。