
Ich möchte laufen können
unicode-names 'abç'
und sehen Sie sich die entsprechenden Unicode-Zeichennamen an:
LATIN SMALL LETTER A
LATIN SMALL LETTER B
LATIN SMALL LETTER C WITH CEDILLA
Das Drucken einer Zeichenfolge als Reihe von Unicode-Glyphennamen wäre in mehreren Fällen nützlich:
- Unterscheiden Sie leicht zu verwechselnde Zeichen wie „i“ und „í“.
- Erklären Sie, was eine Literalzeichenfolge tatsächlich enthält (z. B. nicht druckbare oder nicht zugewiesene Zeichen mit der Breite Null).
Antwort1
DerUniutilsPaket hat das Programm 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
Antwort2
Ich kenne keine gute Möglichkeit, dies zu überprüfen bash
, aber Python verfügt über eine integrierte Unicode-Datenbank, die Sie beispielsweise in einem Skript wie diesem verwenden können:
#!/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)
Sie können dieses Skript folgendermaßen verwenden (vorausgesetzt, Sie haben es aufgerufen 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
Die Datenbank löst ValueError
für alle Zeichen, die sie nicht kennt, eine Ausnahme aus, daher drucken wir ihre Codepunkte dezimal (normalerweise sind dies nicht druckbare Zeichen).
Achtung: Das Skript geht davon aus, dass Ihr Terminal UTF-8-kodiert ist. Wenn das nicht der Fall ist, sollten Sie das Argument der decode()
Methode ändern. Python unterstützt eine sehr große Auswahl an Kodierungen, Ihre wird definitiv dabei sein.
Antwort3
Ich habe u
dazu mal dieses Script geschrieben:
#! /bin/sh -
exec perl -Mcharnames=full -Mopen=locale -lne '
printf "U+%04X %s\n", ord($_), charnames::viacode(ord($_)) for /./g' -- "$@"
Benutzt als:
$ u <<< '棽'
U+0119 LATIN SMALL LETTER E WITH OGONEK
U+00A3 POUND SIGN
U+00BD VULGAR FRACTION ONE HALF
Ich habe auch diese openbox
Tastenkombination (für meinen Fenstermanager):
<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>
Wenn Sie Windows+ drücken J, wird eine Benachrichtigung mit einer Beschreibung der Nicht-ASCII-Zeichen in der primären X11-Auswahl gesendet, die Sie möglicherweise nützlich finden.