Bash
列印具有程式碼點的字元
我有一個程式碼點列表,例如 0x13000、0x1300A。我必須從 bash 列印相應的 Unicode 字元。我已經嘗試使用在論壇中搜尋到的其他命令來執行此操作(在 bash 中,如何轉換 Unicode 程式碼點$$ 0-9A-F $$變成可列印的字元?),但他們沒有工作。
我試過了
echo -ne 'x13000/x130FF/' | iconv -f utf-16be
並且,在終端上使用 perl
perl -C -e 'print chr 0x130F0'
這分兩步完成:
$ printf "$(printf '\\U%08x' 0x13000)\n" 𓀀
如果您看不到渲染的字形(字元圖像),這裡是一個固定的圖像:
這兩個步驟是: - 第一個將程式碼點編號 (0x13000) 格式化為 8 個十六進制數字,並
\U
在其前面。- 第二個使用 bash 內置的 printf 容量來列印 Unicode 字元。輸出將適應所使用的語言環境。
在 utf8 語言環境
en_US.utf8
中,使用可以顯示正確字形的字型,輸出字元將正確顯示在控制台中。在這個系統中,安裝了完整的 noto-font 包。它包含非常漂亮的文本字型,很好的提示,此外它還包含許多語言的字形,包括“Noto Sans 埃及象形文字”字型。
這將列印所有字元列表:
$ printf "$(printf '\\U%08x' 778{24..34})"; echo 𓀀𓀁𓀂𓀃𓀄𓀅𓀆𓀇𓀈𓀉𓀊
值範圍只是十進制的十六進制值:
$ printf '%d\n' 0x13000 0x1300A 77824 77834