입력 문자열에 유니 코드 글리프 이름을 인쇄하는 방법은 무엇입니까?


12

나는 달리고 싶다

unicode-names 'abç'

해당 유니 코드 문자 이름을 참조하십시오.

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

문자열을 일련의 유니 코드 글리프 이름으로 인쇄하면 여러 경우에 유용합니다.

  • "i"및 "í"와 같이 쉽게 혼동되는 문자를 구별하십시오.
  • 리터럴 문자열에 실제로 어떤 내용이 포함되어 있는지 설명하십시오 (예 : 인쇄 할 수 없거나 할당되지 않은 0 너비 문자).

답변:


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

1
이름 만있는 최소 출력의 경우 다음 옵션을 사용하십시오.echo -n …— | uniname -bcegpu
l0b0

8

에서 이것을 확인하는 좋은 방법을 bash모르지만 Python에는 다음과 같은 스크립트에서 사용할 수있는 내장 유니 코드 데이터베이스가 있습니다.

#!/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()메소드 의 인수를 변경해야합니다 . 파이썬은 매우 다양한 인코딩을 지원합니다.


1
더 나은 사용 sys.getdefaultencoding().
Chris Down
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.