Python2에서 unicode 처리에 관한 이슈가 종종 생긴다.
a = '한글'
print(type(a))
print(a)
<type 'str'>
한글
환경에 따라서 위의 내용을 출력했을 때 한글 처리에 문제가 생기는 경우가 있다.
이 경우,
# coding: utf-8
a = u'한글'
print(type(a))
print(a)
<type 'unicode'>
한글
이렇게 문자열 앞에 u를 붙이면 unicode 타입으로 취급되고
1번째 줄의 선언에 의해 unicode 문자열이 utf-8로 encoding되어 처리된다.
하지만, 매번 u를 입력하는 것이 귀찮기도 하고, 입력을 빠뜨릴 수도 있다.
이 경우에 아래와 같은 처리를 해주면 편하다.
# coding: utf-8
from __future__ import unicode_literals
a = '한글'
print(type(a))
print(a)
<type 'unicode'>
한글
u를 입력하지 않았는데도, 문자열을 기본적으로 unicode 타입으로 취급한다.
여기서 Python2와 Python3의 차이가 있는데
Python3에서는 str 자료형에 들어가는 모든 문자열을 유니코드로 인식하고 처리한다.
Python2에서의 str 타입은 Python3에서는 byte 타입에 해당하고
Python2에서의 unicode 타입은 Python3에서는 str 타입에 해당하는 것이다.
이와 같은 이유 때문에
Python3에서는 unicode 처리에 별 문제가 없는 것처럼 보이고
Python2에서는 unicode 처리에 문제가 생기는 경우가 발생하는 것처럼 보이는 것이다.
Read More
댓글 없음:
댓글 쓰기