본문 바로가기
점프 투 파이썬

[점프 투 파이썬] 7장 - 파이썬 날아오르기: 유니코드

by 눈 떠 보니 공대생 2025. 8. 27.

본 글은 '점프 투 파이썬(박응용)'을 바탕으로 공부한 내용을 정리한 글입니다.

파이썬과 유니코드

유니코드: 문자 ↔ 숫자 1:1 대응시키는 전세계 표준

인코딩 하기

인코딩: 유니코드 문자열 → 바이트 문자열로 바꾸는 것

# 유니코드 문자열 -> 바이트 문자열
a = "Life is too short"
b = a.encode('utf-8') # default='utf-8'
print(b) # b'Life is too short'
print(type(b)) # <class 'bytes'>

디코딩 하기

디코딩: 바이트 문자열 → 유니코드 문자열

a = '한글'
b = a.encode('utf-8')
print(b) # b'\\xed\\x95\\x9c\\xea\\xb8\\x80'
print(b.decode('utf-8')) # 한글

c = a.encode('euc-kr')
print(c) # b'\\xc7\\xd1\\xb1\\xdb'
print(c.decode('euc-kr')) # 한글
print(c.decode('utf-8')) # UnicodeDecodeError

입출력과 인코딩

파일 읽기/네트워크 통해 데이터 송수신시

  1. 입력 받은 바이트 문자열: 가능한 빨리 유니코드 문자열로 디코딩
  2. 함수, 클래스 등에서는 유니코드 문자열만 사용
  3. 결과 전송하는 부분에서만 유니코드 문자열을 바이트 문자열로 인코딩에서 반환
# 파일 읽기
with open('euc_kr.txt', encoding='euc-kr') as f:
    data = f.read()

# 유니코드 문자열로 프로그램 수행
data = data + "\\n" + "추가 문자열"

# euc-kr로 수정된 문자열 저장
with open('euc_kr.txt', encoding='euc-kr', mode='w') as f:
    f.write(data)

소스 코드의 인코딩

아래와 같이 인코딩 명시(utf-8로 인코딩시 생략 가능)

# -*- coding: 인코딩_방식 -*-