Command-Line

如何為輸入字元串列印 Unicode 字形名稱?

  • February 25, 2022

我希望能夠跑步

unicode-names 'abç'

並查看相應的 Unicode 字元名稱:

LATIN SMALL LETTER A
LATIN SMALL LETTER B
LATIN SMALL LETTER C WITH CEDILLA

在以下幾種情況下,將字元串列印為一系列 Unicode 字形名稱會很有用:

  • 區分容易混淆的字元,例如“i”和“í”。
  • 解釋文字字元串實際包含的內容(例如不可列印或未分配的零寬度字元)。

uniutils軟體包有以下程序uniname

$ printf %s '…—' |uniname
character  byte       UTF-32   encoded as     glyph   name
   0          0  002026   E2 80 A6       …      HORIZONTAL ELLIPSIS
   1          3  002014   E2 80 94       —      EM DASH

我不知道從 中檢查這個的好方法bash,但是 Python 有一個內置的 Unicode 數據庫,您可以像在這樣的腳本中使用它:

#!/usr/bin/env python
import sys, unicodedata
for ch in sys.stdin.read().decode('utf-8'):
 try:
   print unicodedata.name(ch)
 except ValueError:
   print 'codepoint ', ord(ch)

您可以像這樣使用此腳本(假設您呼叫了它unicode-names):

$ echo 'abc©áοπρσ' | unicode-names
LATIN SMALL LETTER A
LATIN SMALL LETTER B
LATIN SMALL LETTER C
COPYRIGHT SIGN
LATIN SMALL LETTER A WITH ACUTE
GREEK SMALL LETTER OMICRON
GREEK SMALL LETTER PI
GREEK SMALL LETTER RHO
GREEK SMALL LETTER SIGMA
codepoint 10

數據庫ValueError對它不知道的任何字元拋出異常,因此我們以十進制列印它們的程式碼點(這些通常是不可列印的字元)。

警告:該腳本假定您的終端是 UTF-8 編碼的。如果不是,您應該更改該decode()方法的參數。Python 支持非常廣泛的編碼選擇,你的肯定會在那裡。

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