python unicode은 utf-8, utf-16 같은 encoding과는 다른 것이었다. 이것 때문에 엄청 해맸다.ㅜㅜ

http://wiki.python.org/moin/UnicodeEncoding 사이트의 내용을 번역해 본다.

파이선에서는 여러가지 Unicode 인코딩을 지원한다.

다음은 주로 쓰이는 유니코드 인코딩이다.
utf-8
utf-16

아주 중요한점은 이 유니코드 인코딩과 파이선 유니코드와는 별개라는 것이다.
 
다음은 utf-8 이나 utf-16 인코딩의 byte string과 파이선 unicode string의 차이점을 보여준다.

u"foo" - 이건 파이선의 unicode string 이다.
"foo" - 이건 그냥 byte string - 3 바이트 이다.
u"foo".encode('utf-8') -- 처음에 파이선 unicode string을 만든다음에, 이걸 다시 utf-8 으로 인코딩 한 byte string을 나타낸다.

'foo'를 표현하는 데는 3바이트가 필요하지만 u'foo'를 표연하는 데는 몇 바이트가 필요한지 알 필요가 없다.  
AND