[Python] 윈도우에서 setdefaultencoding 시키기 Develop Tip

최근 윈도우 XP에서 웹사이트 크롤링하는 파이썬 프로그램을 개발하다가
이상한 현상을 발견하였다.

이클립스(eclipse) + PyDev 환경에서 실행을 하면 잘 크롤링을 해 오던 것이
명령행에서 python.exe의 인자로 수행하면 제대로 돌지 않는 것이었다.

이것은 시스템에서 Default Encoding이 서로 맞지 않아 발생한 것으로써,
아래와 같이 조치를 취해 해결할 수 있었다.

1) 시스템 디폴트 인코딩 구해오기

if sys.getdefaultencoding() != 'MS949':
print 'Current default encoding is <%s>' % sys.getdefaultencoding()
print 'Edit your python_installed_folder/Lib/site.py'
print ' encoding = "MS949" # Default value set by _PyUnicode_Init()'
위와 유사하게 sys.getdefaultencoding()을 수행해 보면 알 수 있다.
윈도우인 경우 default encoding이 pydev 환경에서는 "MS949"가 나오고,
명령창에서 돌리면 "ascii"로 서로 틀리다는 것을 알 수 있었다.

2) 시스템 디폴트 인코딩 설정
처음에는 간단히 sys.setdefaultencoding('MS949') 라고 주면 될 줄 알았는데,
그렇지 않았다.
2.6, 2.7 모두 다음과 같은 방법으로 설정한다.

만약 설치된 파이썬 경로가 C:\Python26 이라 하면,
C:\Python26\Lib\site.py
파일을 열어, 다음과 같이 되어 있는 줄을

encoding = "ascii" # Default value set by _PyUnicode_Init()

찾아,

encoding = "MS949" # Default value set by _PyUnicode_Init()

로 설정한 다음 명령창에서 돌리면 제대로 된 결과를 얻을 수 있었다.

항상 인코딩 문제는 부딪힐 때마다 어려움을 느끼곤 한다.

핑백

  • 지훈현서 : [OSX] Python 디폴트 인코딩 설정 2011-04-26 11:51:54 #

    ... 현재 Snow Leopard 운영체제를 사용하고 있으며, 디폴트 python은 2.6.1 입니다.일전에 윈도우에서 Python의 디폴트 인코딩 변경 블로그 내용과 동일하게 OSX에서 디폴트 인코딩을 설정하는 방법입니다. 간단히 이클립스에서 잘 수행되던 파이썬 프로그램이터미널에서 ... more

덧글

  • ㅇㅊㅇ 2016/12/17 16:08 # 삭제 답글

    덕분에 원하던 답 얻고 갑니다!
  • 지훈현서아빠 2016/12/18 14:57 #

    도움이 되셨다니 저의 보람입니다~ ^^
댓글 입력 영역

구글애드텍스트