본 글은 '점프 투 파이썬(박응용)'을 바탕으로 공부한 내용을 정리한 글입니다.
파이썬과 유니코드
유니코드: 문자 ↔ 숫자 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
입출력과 인코딩
파일 읽기/네트워크 통해 데이터 송수신시
- 입력 받은 바이트 문자열: 가능한 빨리 유니코드 문자열로 디코딩
- 함수, 클래스 등에서는 유니코드 문자열만 사용
- 결과 전송하는 부분에서만 유니코드 문자열을 바이트 문자열로 인코딩에서 반환
# 파일 읽기
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: 인코딩_방식 -*-
'점프 투 파이썬' 카테고리의 다른 글
| [점프 투 파이썬] 7장 - 파이썬 날아오르기: 이터레이터와 제너레이터 (1) | 2025.08.27 |
|---|---|
| [점프 투 파이썬] 7장 - 파이썬 날아오르기: 클로저와 데코레이터 (0) | 2025.08.27 |
| [점프 투 파이썬] 6장 - 파이썬 프로그래밍 (1) | 2025.08.26 |
| [점프 투 파이썬] 5장 - 파이썬 날개 달기: 내장 함수 (2) | 2025.08.26 |
| [점프 투 파이썬] 5장 - 파이썬 날개 달기: 예외 처리 (2) | 2025.08.26 |