2009년 9월 3일 목요일

python 에서 유니코드 스트링을 일반 스트링으로 바꾸기

제목이 좀 이상한데 어쨌건 필요한 상황은 이렇다.

  • bencode 사용중
  • bencode 의 string 타입은 의미상 바이너리 타입을 의미한다.
  • 그런데 파이썬2.6 의 문자열 타입은 string 하고 unicode
  • 파이썬 bencode 구현은 string 만 받게 되어있다. 이게 사실 당연한거.
  • u"aaa" 등 유니코드를 bencode 하려면 추가 삽질이 필요하다.

그래서 이렇게 하면 된다.
  • utf-8 타입의 문자열 x 를 x.encode("utf-8") 를 이용해서 string 타입으로
  • 다시 유니코드 타입으로 돌리려면 unicode(z, "utf-8") 로

음 시간이 없으니 그냥 코드로 대신
    s = u"나나나나"
    e = bencode(s.encode("utf-8"))
    d = bdecode(e)
    x = unicode(d, "utf-8")
    print s == x