
走れるようになりたい
unicode-names 'abç'
対応する Unicode 文字名を確認します。
LATIN SMALL LETTER A
LATIN SMALL LETTER B
LATIN SMALL LETTER C WITH CEDILLA
文字列を一連の Unicode グリフ名として印刷すると、次のような場合に便利です。
- 「i」と「í」など、混同しやすい文字を区別します。
- リテラル文字列に実際に何が含まれているかを説明します (たとえば、印刷できない文字や割り当てられていないゼロ幅の文字など)。
答え1
のユニユーティリティパッケージにはプログラムが含まれています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
答え2
これを から確認する良い方法はわかりません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
認識できない文字に対して例外をスローするため、それらのコードポイントを 10 進数で出力します (通常、これらは印刷できない文字です)。
注意: スクリプトは、端末が UTF-8 でエンコードされていることを前提としています。そうでない場合は、decode()
メソッドの引数を変更する必要があります。Python は非常に幅広いエンコードをサポートしているので、あなたのものも間違いなくそこにあります。
答え3
私はかつてu
そのためにこのスクリプトを書きました:
#! /bin/sh -
exec perl -Mcharnames=full -Mopen=locale -lne '
printf "U+%04X %s\n", ord($_), charnames::viacode(ord($_)) for /./g' -- "$@"
使用されます:
$ u <<< '棽'
U+0119 LATIN SMALL LETTER E WITH OGONEK
U+00A3 POUND SIGN
U+00BD VULGAR FRACTION ONE HALF
私もこのopenbox
(私のウィンドウ マネージャー)キー バインディングを持っています:
<keybind key="W-J">
<action name="Execute">
<command>sh -c "notify-send -- \"$(xclip -o | perl -Mcharnames=:full -C -lne 'printf \"U+%04X %s\n\", $_, charnames::viacode($_) for map ord, /\P{ascii}/g')\""</command>
</action>
</keybind>
Windows+を押すと、J主要な X11 選択内の非 ASCII 文字を説明する通知が送信されます。これは役に立つかもしれません。