문제

다음 Python 코드는 BeautifulStoneSoup을 사용하여 Tolkien의 "The Children of Húrin"에 대한 LibraryThing API 정보를 가져옵니다.

import urllib2

from BeautifulSoup import BeautifulStoneSoup

URL = ("http://www.librarything.com/services/rest/1.0/"
            "?method=librarything.ck.getwork&id=1907912"
            "&apikey=2a2e596b887f554db2bbbf3b07ff812a")

soup = BeautifulStoneSoup(urllib2.urlopen(URL),
                          convertEntities=BeautifulStoneSoup.ALL_ENTITIES)
title_field = soup.find('field', attrs={'name': 'canonicaltitle'})
print title_field.find('fact').string

안타깝게도 'Húrin' 대신 'Húrin'이 인쇄됩니다.이는 분명히 인코딩 문제이지만 예상되는 출력을 얻으려면 어떻게 해야 하는지 알 수 없습니다.도움을 주시면 대단히 감사하겠습니다.

도움이 되었습니까?

해결책

웹페이지 소스를 보면 다음과 같습니다. The Children of Húrin.따라서 XML로 변환되기도 전에 인코딩이 이미 어딘가에서 깨졌습니다...

모든 책의 일반적인 문제이고 이를 해결해야 하는 경우 다음이 효과가 있는 것 같습니다.

unicode(title_field.find('fact').string).encode("latin1").decode("utf-8")

다른 팁

웹페이지가 인코딩에 대해 거짓말을 하고 있을 수 있습니다.출력은 UTF-8처럼 보입니다.끝에 str이 있으면 이를 UTF-8로 디코딩해야 합니다.대신 유니코드가 있는 경우 먼저 Latin-1로 인코딩해야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top