打印具有代码点的字符

打印具有代码点的字符

我有一个代码点列表,例如 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软件包。

相关内容