Programming/etc

Python IDLE 한글 설정

scii 2013. 2. 13. 22:45

이 포스팅은 Python 2.7.3 의 환경에서 진행되었다.


01. 한글 설정이 필요한 이유?

Python의 기본 인코딩 형식은 'ASCII' 형식이다. 

그래서 다른 프로그램과의 호환을 위해서 인코딩을 'UTF-8' 로 변경해야한다. 

※  EUC-KR 은 유닉스의 한글 완성형이고, CP949는 EUC-KR 을 확장하여 더 많은 글자를 포함한 윈도우 계열의 형식이다. 따라서 완성형 한글을 쓰는 경우에는 호환성을 위해 CP-949를 사용한다. 

하지만 국제화 규격을 생각하여 이들보다는 UTF-8 을 쓰는 것이 좋다.

변경이유는, 문자를 변환하는 형식이 달라 한글 인식을 못하거나 깨짐 현상이 발생할 수 있기 때문이다. UTF-8은 유니코드이기 대문에 대부분의 프로그램에서 동일한 byte로 문자를 인식한다. 그래서 문제를 줄일 수 있다.


02. Python에게 한글 인식 적용시키기. (윈도우도 동일하다. 단지, 경로만 틀릴 뿐이다.(window의 경우 c:\Python27\Lib)

파이썬 idle을 열고 open을 한다


03. /usr/lib/python2.7로 간다. 리눅스에서는 여기가 자신의 파이썬 경로이다. 그 후, site.py 파일을 찾아 열기를 한다.


04. Edit - Find를 눌러서 setencoding 함수 부분으로 이동한다.


05. encoding = "ascii"  #  Default value set by _PyUnicode_Init() 부분을 찾는다. 여기를 "ascii"  ->  "utf-8" 로 변경한다.

그 후, 저장을 한다. 

하지만 리눅스에서는 퍼미션 에러가 발생할 것이다. 왜냐하면 자신의 홈디렉토리의 파일이 아니라 관리자의 파일이기 때문이다. 

그래서 Linux 환경에서는 idle에서 하면 안된다. (window 사용자는 잘 됨.)


06. 저장에 실패하였기 때문에, 다른 방법을 찾아야 한다.

터미널을 열어서 site.py 파일이 있는 곳으로 이동한다. cd /urs/lib/python2.7/

그 후, 관리자의 권한으로 열어야하므로 sudo vi site.py 로 파일을 연다.


07. /setencoding 으로 해당 함수가 있는 곳으로 이동한다.


08. encoding = "ascii"가 보인다. "utf-8"로 변경한다. 그 후 wq로 저장하고 빠져나온다.



윈도우 사용자는 encoding 부분을 cp949로 해줘야 한다. utf-8로 하면 에러발생.



09. 마지막으로 출력 방식을 한 번 더 셋팅해줘야 한다.

해당 디렉토리의 idlelib 디렉토리로 이동한다. cd idlelib

이동해서 목록을 살펴보면 PyShell.py 파일이 보일것이다. 이 파일을 연다.


10. /def readline 으로 해당 함수를 찾아서 이동한다.


11. 해당 함수의 맨 밑의 return line 을 찾아서 str(line) 으로 바꾸어준다.


12. python에서 한글이 잘 표현되는 것을 볼 수 있다.


이렇게 미리 Python의 인코딩을 설정해주면, 앞으로 다른 프로그램과의 호환 문제에 있어서 인식을 못하는 경우를 방지할 수 있다. 

문제가 발생해서 해결법을 찾는 것보다...미리 방지하는 것이 좋을 것 같다!!