- 3
- 이니스프리
- 조회 수 425
저는 파이썬에 대해 아주 기초적인 내용만을 알고 있습니다 ㅠㅠ
나중에 수정해야 할 부분이나 새로 추가해야 할 부분을 발견하게 되면 보완하도록 하겠습니다.
1) 파이썬3은 파이썬2와 달리 UTF-8이 디폴트이기 때문에 #-*- coding:utf-8 -*- 이 구문은 불필요합니다.
2) 스트링의 인코딩과 관련해서는 파이썬 2.X와 표현이 조금 달라진 점이 있습니다.
s = "한글"
u = str(s, "utf-8")
3) 변수에 담긴 문자열에 인코딩 문제가 발생하면 다음과 같이 해결하시면 됩니다 ^^
var_string = var_string.decode('cp949').encode('utf-8')
4) 외부 라이브러리의 인코딩을 설정하려면 다음과 같은 방식으로 하시면 됩니다.
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
5) 입출력과 관련해서는 다음과 같은 방식으로 처리하시면 됩니다.
with open('euc_kr.txt', encoding='euc-kr') as f:
또는
f = open("utf8.txt", 'w', encoding='UTF-8')
6) 아톰 계열의 에디터에서 문제가 발생하면 다음과 같은 내용을 스크립트에 추가하시면 됩니다.
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
추가) Beautifulsoup에서의 인코딩은 다음과 같이 처리합니다.
soup = BeautifulSoup(html, 'html.parser', from_encoding='euc-kr')
작성자
댓글 3
현재 윈도우 커널에 유니코드가 적용되었음에도 불구하고
윈도우 95 시절의 CP949를 왜 아직도 윈도우의 디폴트 인코딩으로 사용하는지 모르겠어요.
그리고 일부 웹사이트에서 CP949를 아직도 사용하더군요 ㅠㅠ
심지어 인코딩으로 EUC-KR을 선언해 놓고서 CP949로 인코딩된 페이지를 보내는 웹사이트들도 있어서 헷갈리더군요.
여담이지만 인코딩 문제에 아주 민감하신 분들은
커널에 직접 접근하는 보안프로그램은 2바이트 문자권의 언어가 아닌 영문판을 사용하길 권한다고 말씀하시기도 하더군요.
2바이트 문자권인 한글로 인해 항상 문제가 생기는 것 같습니다. ㅠㅠ