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

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

달릴 수 있었으면 좋겠어

unicode-names 'abç'

그리고 해당 유니코드 문자 이름을 확인하세요.

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

문자열을 일련의 유니코드 문자 이름으로 인쇄하는 것은 다양한 상황에서 유용합니다:

  • "i" 및 "í"와 같이 혼동되는 문자를 구별합니다.
  • 리터럴 문자열에 실제로 포함된 내용(예: 인쇄할 수 없거나 할당되지 않은 너비가 0인 문자)을 해석합니다.

답변1

이것통합 도구패키지에는 다음과 같은 프로그램이 있습니다 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

답변2

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

#!/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(). Python은 매우 다양한 인코딩을 지원하며 여러분의 인코딩도 분명히 그 중 하나일 것입니다.

답변3

나는 u이를 위해 다음과 같은 스크립트를 작성한 적이 있습니다.

#! /bin/sh -
exec perl -Mcharnames=full -Mopen=locale -lne '
  printf "U+%04X %s\n", ord($_), charnames::viacode(ord($_)) for /./g' -- "$@"

다음과 같이 사용됩니다:

$ u <<< 'ę£½'
U+0119 LATIN SMALL LETTER E WITH OGONEK
U+00A3 POUND SIGN
U+00BD VULGAR FRACTION ONE HALF

나는 또한 다음과 같은 openbox(내 창 관리자) 키 바인딩을 가지고 있습니다:

  <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>

Windows+를 누르면 J기본 X11 선택 항목에서 ASCII가 아닌 문자를 설명하는 알림이 전송되며 이는 유용할 수 있습니다.

관련 정보