l0b*_*0b0 12 command-line unicode
我希望能够跑步
unicode-names 'abç'
Run Code Online (Sandbox Code Playgroud)
并查看相应的 Unicode 字符名称:
LATIN SMALL LETTER A
LATIN SMALL LETTER B
LATIN SMALL LETTER C WITH CEDILLA
Run Code Online (Sandbox Code Playgroud)
在以下几种情况下,将字符串打印为一系列 Unicode 字形名称会很有用:
don*_*lly 14
该uniutils包具有程序uniname。
$ echo -n …—|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
Run Code Online (Sandbox Code Playgroud)
我不知道从 中检查这个的好方法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)
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用这个脚本(假设你调用了它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
Run Code Online (Sandbox Code Playgroud)
数据库会ValueError针对它不知道的任何字符抛出异常,因此我们以十进制打印它们的代码点(通常这些是不可打印的字符)。
警告:脚本假定您的终端是 UTF-8 编码的。如果不是,您应该更改decode()方法的参数。Python 支持非常广泛的编码选择,你肯定会在那里。