와 정말 이것때문에 내가 오늘 날린 시간을 생각하면.........부들부들.....

 

급하게 처리해야 하는 일이 있었는데 이것 때문에 한참 시간을 잡아먹었다.

파일을 읽어서 파일의 각 라인을 delimeter로 split한 리스트에 이런 저런 작업을 한 후 리스트를 출력해야 하는 상황이었는데 아무리 해도 '\xed\x95\x9c\xea\xb8\x80' 이런 식으로만 출력되는 것이었다..............ㅠㅠㅠ

즉, 어떤 리스트 li = ['123', '한글'] 이 있을 때 print(li)를 하려고 했던 상황.

파이썬 버전은 2.x (몇이었더라....)


구글링해서 적용해본 내용들


1) 파일 인코딩 형식 설정

: 파일 제일 위에 파일 인코딩 형식을 설정해준다

ex)

# -*- coding: utf-8 -*-


이건 원래 파일에 적용해놨던 내용이었는데, 파이썬 파일 내에서 한글을 사용하는 것 자체(주석을 한글로 단다던지, 상수값에 한글을 사용한다던지)에만 적용되는 것 같았다(추측임.....정확히 알아봐야지 언젠가.....). 혹시 몰라서 euc-kr로도 해봤는데 안 됨.



2) sys.setdefaultencoding 설정

: 파이썬 코드로 직접 디폴트 인코딩값을 설정한다.

import sys


reload(sys)

sys.setdefaultencoding('utf-8')


반드시 reload(sys)를 해야 적용된다.

근데 이것도 효과 없었음. euc-kr로 해봐도 역시 안 됨.



3) encode(), decode() 등의 함수를 적용한다.

: 이건 아예 에러 나면서 안 됨. 어떻게 적용했었는지 기억이 잘 안난다. 



해결


야매로 해결한 느낌이지만 일단 결과물을 먼저 내는게 급했기 때문에 해결방법을 찾은 것만으로도 감지덕지하며 어깨춤을 췄다. 그리고 그 방법은 바로..............

>>> li=['abc','한글']


>>> print(li)

['abc', '\xed\x95\x9c\xea\xb8\x80']


>>> print li[0], li[1]
abc 한글

이렇게 아래 방법으로 출력하니까 한글이 정상적으로 출력되더라 이 말씀!!

ㅎㅎ....영어권 나라에서 태어났으면 좋았을텐데....ㅎㅎㅎ....

ㅎㅎㅎ....



지금은 아직 해야 할 일이 남아있으므로 일단 이 포스팅을 남기는 것으로 만족하고....

이 문제에 대해 추가로 더 확인해봐야 할 사항에 대해서만 일단 작성해놔야지.



공부해야 할 것

* 왜 리스트를 통째로 toString으로 출력하려고 하면 한글이 출력되지 않는데 각각 출력하면 되는 거지?

* 어떤 방법을 써야 리스트를 통째로 출력해도 한글이 출력되지?

* 파이썬 한글 인코딩 관련 공부!


'잡동 > Python' 카테고리의 다른 글

[Flask] 리눅스 우분투 Flask 설치  (0) 2016.07.06
[Python] Exception(예외) 발생시키기  (0) 2016.05.18

+ Recent posts