
me gustaria poder correr
unicode-names 'abç'
y vea los nombres de caracteres Unicode correspondientes:
LATIN SMALL LETTER A
LATIN SMALL LETTER B
LATIN SMALL LETTER C WITH CEDILLA
Imprimir una cadena como una serie de nombres de glifos Unicode sería útil en varios casos:
- Distinguir caracteres que se confunden fácilmente como "i" e "í".
- Explique qué contiene realmente una cadena literal (por ejemplo, caracteres de ancho cero no imprimibles o no asignados).
Respuesta1
EluniutilsEl paquete tiene el programa 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
Respuesta2
No conozco una buena manera de verificar esto bash
, pero Python tiene una base de datos Unicode incorporada que puedes usar como en un script como este:
#!/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)
Puede utilizar este script de esta manera (suponiendo que lo haya llamado 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
La base de datos genera una ValueError
excepción para cualquier carácter que no conoce, por lo que imprimimos sus puntos de código en decimal (normalmente son caracteres no imprimibles).
Advertencia: el script asume que su terminal está codificado en UTF-8. Si no es así, deberías cambiar el argumento del decode()
método. Python admite una selección muy amplia de codificaciones, la tuya definitivamente estará allí.
Respuesta3
Una vez escribí este u
guión para eso:
#! /bin/sh -
exec perl -Mcharnames=full -Mopen=locale -lne '
printf "U+%04X %s\n", ord($_), charnames::viacode(ord($_)) for /./g' -- "$@"
Usado como:
$ u <<< '棽'
U+0119 LATIN SMALL LETTER E WITH OGONEK
U+00A3 POUND SIGN
U+00BD VULGAR FRACTION ONE HALF
También tengo esta openbox
combinación de teclas (mi administrador de ventanas):
<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>
Lo cual, al presionar Windows+, Jenvía una notificación que describe los caracteres que no son ASCII en la selección principal de X11, lo que puede resultarle útil.