Giriş dizesi için Unicode glif adları nasıl yazdırılır?


12

Koşabilmek istiyorum

unicode-names 'abç'

ve karşılık gelen Unicode karakter adlarına bakın:

LATIN SMALL LETTER A
LATIN SMALL LETTER B
LATIN SMALL LETTER C WITH CEDILLA

Bir dizeyi Unicode glif adları dizisi olarak yazdırmak birkaç durumda yararlı olabilir:

  • "İ" ve "í" gibi kolayca karışabilen karakterleri ayırt edin.
  • Değişmez bir dizenin gerçekte ne içerdiğini açıklayın (örneğin yazdırılamayan veya atanmamış, sıfır genişlikli karakterler).

Yanıtlar:


14

Uniutils paket programı var 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

1
Yalnızca adlara sahip en az çıktı için şu seçenekleri kullanın:echo -n …— | uniname -bcegpu
l0b0 19:12

8

Bunu kontrol etmek için iyi bir yol bilmiyorum bash, ama Python böyle bir komut dosyasında gibi kullanabilirsiniz yerleşik bir Unicode veritabanı vardır:

#!/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)

Bu komut dosyasını şu şekilde kullanabilirsiniz (aradığınız varsayılarak 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

Veritabanı ValueError, bilmediği karakterler için bir istisna atar , bu nedenle kod noktalarını ondalık olarak yazdırırız (bunlar genellikle yazdırılamaz karakterlerdir).

Dikkat: komut dosyası, terminalinizin UTF-8 kodlu olduğunu varsayar. Değilse, decode()yöntemin argümanını değiştirmeniz gerekir . Python çok çeşitli kodlamaları destekler, sizinki kesinlikle orada olacaktır.


1
Daha iyi kullanım sys.getdefaultencoding().
Chris Down
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.