走れたらいいな
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は非常に多様なエンコーディングをサポートし、あなたのエンコーディングも明らかにそれらの1つです。
答え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以外の文字を説明する通知が送信されます。これは便利です。