본문 바로가기
Python

[Python] Unicode and Python : Unicode Literal

by ds31x 2024. 1. 16.

0. 시작하기 전 참고 URLs

Literal에 대한 자료.

https://dsaint31.tistory.com/462

 

[Basic] Literal

소스 코드 상에서 고정된 값을 가르킴. (또는 고정된 값을 나타내는 표기법을 의미함.) Programming language에서 data의 값을 지정(specifying data values)하는 방법은 다음 중의 하나임. Literal을 사용. Variable

dsaint31.tistory.com

 

Unicode에 대한 자료.

https://dsaint31.me/mkdocs_site/CE/ch01/code_for_character/#unicode

 

BME228

Codes for Characters Code 란 특정 형태의 information을 다른 방법으로 표현하는 규칙 또는 해당 규칙으로 표현된 결과물 을 가르킴. 문자를 나타내기 위한 code는 인간이 사용하는 문자 를 일종의 기호 또

dsaint31.me


1. Unicode Literal 기재법

Python 에서 unicode를 사용하여 문자열 lateral을 기재하는 방법.

  • \u prefix와 4개의 hex nubmer로 Unicode의 코드값(base16으로 기재됨)을 기재하는 방식 (Unicode Escape Sequence).
    • basic multilingual planes (BMP) 에 속하는 경우로,
    • BMP: 0x00000000 ~ 0x0000FFFF
    • 일반적인 글자들의 경우 여기에 대부분 속함.
  • \U prefix와 8개의 hex number로 Unicode의 코드값을 기재하는 방식 (Unicode Escape Sequence).
    • BMP 이외의 higher planes에 속하는 경우 이용됨.
  • chr(numeric_id) 를 이용하는 방식.
    • 여기서 argument인 numeric_id 는 Unicode의 코드값을 10진수 또는 16진수의 숫자로 할당함.
    • 16진수 표현시 0x prefix가 필요함.
  • \N{Unicode's Name} 의 형태로 curly brace 안에 Unicode 이름을 지정하는 방식.
    • character name을 이용한 Unicode Escape Sequence.
  • UTF-8 로 인코딩된 웹페이지나 text file에서 복사하여 갖다붙이는 방식.

Escape Sequence와 유사하게
Unicode Escape Sequence를 이용한다고 생각하면 됨.



예제 : \u를 이용한 Unicode Escape Sequence

# 걀 : ac40
# 귥 : ade5

# kor_char = '\uac40'
kor_char = '\uade5'
kor_char 

 

출력은 다음과 같음.

'귥'

 


예제 : \U를 이용한 Unicode Escape Sequence

# kor_char = '\U0000ac40'
kor_char = '\U0000ade5'
kor_char

 

출력은 다음과 같음.

'귥'

 

예제 : chr 를 이용.

chr(0xade5)

 

출력은 다음과 같음.

'귥'

예제 : \N{ }를 이용한 Unicode Escape Sequence

 

unicode 모듈의 lookupname을 통해,

  • 특정문자의 Unicode 코드값(=code point)과
  • 이름을 확인할 수 있음.
import unicodedata

unicode_name = unicodedata.name(kor_char)
unicode_name

 

출력은 다음과 같음.

HANGUL SYLLABLE GYULG

 

 

찾은 이름에 해당하는 글자를 lookup을 통해 찾을 수 있음.

unicodedata.lookup(unicode_name)

 

출력은 다음과 같음.

'귥'

 

이를 이용한 Unicode Escape Sequenc 예제코드는 다음과 같음.

kor_char_1 = f'다음은 \N{HANGUL SYLLABLE GYULG}'
kor_char_1

 

출력은 다음과 같음.

'다음은 귥'

앞서 살펴본 형태로 문자열 literal을 만들면, len으로 처리시 글자수로 처리됨(code point의 길이가 아님).
즉, 문자열 str의 객체라고 보면 된다

snowman_char = "\u2603"
print(type(snowman_char))
len(snowman_char)
snowman_char