[Python 파이썬] 한글 유니코드(UTF-8) 인코딩 디코딩 (unicode encodeing, decoding) Python

아래의 Python 2.7.6 콘솔의 화면을 한번 보자

일반적으로 파이썬으로 한글을 입력하게되면 아래와같은 문자열이 나온다.

>>> a = "안녕"

>>> a
'\xec\x95\x88\xeb\x85\x95'

>>> print a
안녕

\x~~ 로 시작하는 문자열들.. 이것은 파이썬 콘솔에서 한글문자 데이터의 표기 형식이다.
이제 이것의 utf-8 표기 형식을 한번 보자

>>> b = a.decode("utf-8")

>>> b
u'\uc548\ub155'

주로 XML문서혹은 UTF-8의 형식으로 유입되는 데이터는 위와같이 \u~~ 형태의 문자형태를 갖는다.
프린트 해보면?

>>> print b
안녕

아무 문제 없다.
그런데 이러한 데이터로 파일을 출력하거나 DB 저장을 시도하는경우 종종 아래와 같은 에러를 뱉는경우가 있다.

ascii codec can t encode characters in position 18-24: ordinal not in range(128)

시스템의 default encoding이 ascii 이기 떄문인데, 이럴때는 강제로 utf-8로 인코딩을 해주어야 한다.
아래와 같이 인코딩을 실시한다.

>>> c = b.encode("utf-8")

>>> c
'\xec\x95\x88\xeb\x85\x95'

어디서 많이 보던형식이지 않는가? ㅎㅎ
이렇게 변환된 데이터는 당신이 원하는작업을 원활히 수행할 수 있도록 해줄것이다.

>>> print c
안녕

끝 !!



통계 위젯 (블랙)

4346
720
199893

GoogleAdsenseResponsive

Cluster map