유니코드 시스템(Unicode System)

pengpengIT·2024년 2월 5일

파이썬

목록 보기
6/6

소프트웨어 애플리케이션은 종종 영어, 프랑스어, 일본어, 히브리어 또는 힌디어와 같이 다양한 언어로 메시지를 출력해야 할 필요가 있다.
파이썬의 문자열 타입은 문자를 표현하기 위해 유니코드 표준을 사용한다.
이를 통해 프로그램은 이 모든 다양한 문자와 작업할 수 있게 된다.

문자는 텍스트의 가장 작은 구성 요소다.
'A', 'B', 'C' 등은 모두 다른 문자다. 'È' 및 'Í'도 마찬가지다.
유니코드 문자열은 코드 포인트의 시퀀스로 구성되어 있다.
코드 포인트는 0에서 0x10FFFF(10진수로 1,114,111)까지의 숫자다.
이 코드 포인트 시퀀스는 코드 단위의 세트로 메모리에 나타내어야 하며, 코드 단위는 8비트 바이트로 매핑된다.

문자 인코딩

코드 포인트의 시퀀스는 메모리에서 코드 단위의 세트로 나타낸 후 8비트 바이트로 매핑된다.
유니코드 문자열을 바이트 시퀀스로 변환하는 규칙을 문자 인코딩이라고 한다.

세 가지 종류의 인코딩이 있으며, UTF-8, UTF-16 및 UTF-32가 있다.
UTF는 유니코드 변환 형식을 나타낸다.

Python의 유니코드 지원

Python 3.0 이상에서는 내장된 유니코드 지원이 있다.
str 타입은 유니코드 문자를 포함하고 있으므로 단일, 이중 또는 삼중 따옴표 구문을 사용하여 생성된 모든 문자열은 유니코드로 저장된다.
Python 소스 코드의 기본 인코딩은 UTF-8이다.

따라서 문자열은 유니코드 문자(3/4)의 글자 표현 또는 유니코드 값(\u00BE)을 포함할 수 있다.

var = "3/4"
print (var)     #3/4
var = "\u00BE"
print (var)     

예시에서 문자열 "10"은 각각 \u0031과 \u0030인 1과 0의 유니코드 값을 사용하여 저장된다.

var = "\u0031\u0030"
print (var)     #10

문자열은 텍스트를 사람이 읽을 수 있는 형식으로 표시하고, 바이트는 문자를 이진 데이터로 저장한다.
인코딩은 데이터를 문자열에서 일련의 바이트로 변환한다.
디코딩은 바이트를 다시 사람이 읽을 수 있는 문자와 기호로 변환한다.
이 두 가지 방법을 혼동하지 않는 것이 중요하다.
encode는 문자열 메서드이며 decode는 파이썬 바이트 객체의 메서드다.

다음 예시에서는 ASCII 문자로 구성된 문자열 변수가 있다.
ASCII는 유니코드 문자 집합의 하위 집합이다.
encode() 메서드는 이 문자열을 바이트 객체로 변환하는 데 사용된다.

string = "Hello"
tobytes = string.encode('utf-8')
print (tobytes)
string = tobytes.decode('utf-8')
print (string)

decode() 메서드는 바이트 객체를 다시 str 객체로 변환한다.
사용된 인코딩 방식은 utf-8이다.

b'Hello'
Hello

다음 예시에서는 루피 심볼 (₹)이 유니코드 값을 사용하여 변수에 저장된다.
문자열을 바이트로 변환한 다음 다시 str로 변환한다.

string = "\u20B9"
print (string)     #₹
tobytes = string.encode('utf-8')
print (tobytes)    #b'\xe2\x82\xb9'
string = tobytes.decode('utf-8')
print (string)     #₹

참조. tutorialspoint, 「Python - Unicode System」, tutorialspoint 사이트

profile
펭귄을 좋아하고 언어를 공부하는 기획자

0개의 댓글