본문 바로가기

프로그래밍/python

UnicodeDecodeError: 'ascii' codec can't decode certain bytes

https://bugs.launchpad.net/ubuntu/+source/python-mysqldb/+bug/57067

http://sourceforge.net/tracker/index.php?func=detail&aid=1521274&group_id=22307&atid=374932

한 동안 저를 괴롭혔던 우분투 상에서 파이썬으로 한글데이터를 MySQLdb에 저장할 때에 발생했던 문제의 원인을 찾았네요 저는 python 2.4 버전을 사용하고 있었구요, 위의 링크에 제공되는 cursor.py 파일을 수정하는 것으로 해결 했습니다.

패치파일의 일부는 아래와 같습니다.

-        query = query.encode(charset)
+        if isinstance(query,UnicodeType):
+            query = query.encode(charset)

입력 문자열의 유니코드 여부에 관계없이 무조건 인코딩하지 않고 유니코드 타입인 경우에만 인코딩 하도록 패치를 하면 해결할 수 있습니다.