Bash

列印具有程式碼點的字元

  • November 10, 2016

我有一個程式碼點列表,例如 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

引用自:https://unix.stackexchange.com/questions/322336