Django 0.97에서 unknown encoding: X-MAC-KOREAN 문제
09 Apr 2008맥(Mac OS X)에서 Django 0.97 pre1판을 기반으로 개발을 할 때 디버깅 화면이 나오지 않고
unknown encoding: X-MAC-KOREAN
위와 같은 문자열이 들어간 오류 화면이 뜹니다. 저는 맥 언어 환경을 우리말로 했기 때문에 X-MAC-KOREAN 이라고 뜨는 것이죠.
이것은 Django에 있는 tzinfo.py (timezone 정보 관리하는 역할)가 기본 locale 을 가져와서 그럴싸한 문자열을 만들려 하기 때문에 맥 환경에서 발생하는 문제입니다. 이게 0.97 언제쯤 고쳐질지는 모르겠으니 일단 아쉬운대로 고쳐서 써봅시다. (음냐. 이러면 svn update 할 때 conflict 뜨는데 그 해결은 알아서 하세요)
대상 소스 파일 : django/utils/tzinfo.py
위 파일을 열면
try: DEFAULT_ENCODING = locale.getdefaultlocale()[1] or 'ascii' except: # Any problems at all determining the locale and we fallback. See #5846. DEFAULT_ENCODING = 'ascii'
이런 부분이 나옵니다. 소스 파일 안에서 거의 맨 위에 있지요. 여기서 문제가 되는 부분이 바로 try 안에 있는 녀석입니다. 맥에서는 저걸 실행하면 X-MAC-뭐시기라고 가져옵니다. 그런 게 없으니 오류가 나는 것이고요. 그 아래에 DEFAULT_ENCODING = 'utf-8'을 넣어주면 오류 안납니다.
try: DEFAULT_ENCODING = locale.getdefaultlocale()[1] or 'ascii' DEFAULT_ENCODING = 'utf-8' except: # Any problems at all determining the locale and we fallback. See #5846. DEFAULT_ENCODING = 'ascii'
이러면 django의 디버깅 화면이 잘 나옵니다. 찝찝하면 DEFAULT_ENCODING = locale.getdefaultlocale()[1] or 'ascii' 를 주석으로 하세요.
여기서 교훈 한 마디. 역시 시험판, 특히 미리맛보기판(pre version)은 안쓰는게 정신 건강에 좋다.