본문 바로가기
목차
Python

[Python] Unicode and Python : Unicode Literal

by ds31x 2024. 1. 16.
728x90
반응형

0. 시작하기 전 참고 URLs

Literal에 대한 자료.

https://dsaint31.tistory.com/462

 

[Basic] Literal

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

dsaint31.tistory.com

 

Unicode에 대한 자료.

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

 

BME228

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

dsaint31.me

unicode의 basic multilingual plane 을 그림으로 표시한 것. 한 칸은 4개의 hex number 중 앞의 2자리 수로 구분됨. 즉, 1개의 칸이 256개의 코드를 가짐. 한글을 포함하여 거의 대부분의 글자는 BMP에 속함. ref: https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%ED%8F%89%EB%A9%B4


1. Unicode Literal 기재법

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

  • \u prefix와 4개의 hex nubmer로 Unicode의 코드값(base16으로 기재됨)을 기재하는 방식 (Unicode Escape Sequence).
    • unicode의 17개 plane 중에서
    • 첫번째인 basic multilingual plane (BMP) 에 속하는 경우로,
    • BMP: 0x00000000 ~ 0x0000FFFF
    • 일반적인 글자들(한글 포함)의 경우 여기에 대부분 속함.
    • 4개의 hex number = 2bytes
  • \U prefix와 8개의 hex number로 Unicode의 코드값을 기재하는 방식 (Unicode Escape Sequence).
    • BMP 이외의 higher planes에 속하는 경우 이용됨.
    • 8개의 hex number = 4bytes
  • chr(numeric_id) 를 이용하는 방식.
    • 여기서 argument인 numeric_idUnicode의 코드값을 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를 이용한 2바이트 Unicode Escape Sequence

# 걀 : ac40
# 귥 : ade5

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

 

출력은 다음과 같음.

'귥'

 


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

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

 

출력은 다음과 같음.

'귥'

 

예제 : chr() 를 이용.

chr(0xade5)

 

출력은 다음과 같음.

'귥'

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

특정 unicode의 이름을 알려면 특정한 모듈이 필요함:

 

unicode 모듈의 lookupname을 통해,

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

kor_char = '\U0000ade5'
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

 

출력은 다음과 같음.

'다음은 귥'

str로 취급되는 unicode literal

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

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

같이 보면 좋은 자료들

https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%ED%8F%89%EB%A9%B4


https://blog.naver.com/dsaint31/223826029991

 

python-str (문자열, string)

str (str, 문자열) 이란? text를 다루기 위한 지원되는 sequence type의 class. list와 tuple 처럼 sequenc...

blog.naver.com


 

728x90