sitelink1 | http://ecolemodev.wikinamu.com/%ED%8C%8C...C#header-2 |
---|---|
sitelink2 | |
extra_vars5 | |
extra_vars6 |
문자 처리
인코딩
파이썬 모듈 .py 파일의 인코딩은 첫 줄의 주석으로 선언한다.
# coding: utf8
파이썬 2.x에서는 문자열을 처리하는 타입이 str과 unicode 두 가지다. str은 바이트로 인코딩된 문자열이며, unicode는 추상적인 문자셋이다. 따라서 unicode를 str로 변환할 때는 인코딩을 지정해서 encode하며, str을 unicode로 변환할 때는 인코딩을 지정해서 decode한다.
>>> '한글' # print repr('한글')
'\xed\x95\x9c\xea\xb8\x80'
>>> print '한글'
한글
>>> u'한글'
u'\ud55c\uae00'
>>> print u'한글'
한글
>>> '한글'.decode('utf8')
u'\ud55c\uae00'
>>> u'한글'.encode('utf8')
'\xed\x95\x9c\xea\xb8\x80'
>>> u'한글'.encode('euc-kr')
'\xc7\xd1\xb1\xdb'
파이썬 3에서는 str이 파이썬 2.x의 unicode 역할을 하며 기존 str은 bytes로 바뀌는데, 이건 이제 문자열이 아니라 바이트 배열에 가깝다. 자바의 String과 byte[]의 관계와 비슷하다고 보면 된다. 참고로 파이썬 3에서는 변수명이나 함수명 등의 identifier도 한글을 쓸 수 있다.
URL Encoding
URL에 사용할 수 없는 문자를 사용할 수 있는 문자 집합으로 변환하는 것. 이것도 두 가지가 있는데, 공백을 %20으로 변환하는 것과 +로 변환하는 것이 다르다.
>>> urllib.quote('안녕 python')
'%EC%95%88%EB%85%95%20python'
>>>urllib.quote_plus('안녕 python')
'%EC%95%88%EB%85%95+python'
URL의 path 부분은 urllib.quote로 해야 하고, 폼 데이터는 urllib.quote_plus가 표준 권고사항이지만 urllib.quote를 써도 괜찮다.
urllib.urlencode는 dict를 urllib.quote를 이용해서 인코딩된 문자열로 바꾼다.