2016-11-30 43 views
1

我正在寫使用BeautifulSoup4 Python程序,當我獲取包含一個程式化的引號u'\u2019'我能打印出整個元素,像這樣的HTML元素:Python:爲什麼我可以在一行代碼上打印Unicode字符,但是當我稍後嘗試打印時,同一個Unicode字符會導致錯誤?

代碼:

print "Using song: %s" % (song_link) 

結果:

Using song: <a href="http://www.songlyrics.com/anna-kendrick/cups-pitch-perfects-when-im-gone-lyrics/" title="Cups (Pitch Perfect’s 「When I’m Gone」) Lyrics Anna Kendrick">Cups (Pitch Perfect’s 「When I’m Gone」)</a> 


但後來當我試圖打印出只是文本該元素的,它失敗:

代碼:

print "Song text: %s" % (song_link.text) 

結果:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 30: ordinal not in range(128) 


爲什麼會發生這種情況?爲什麼這個工作一會兒,然後不工作下一個?它是可重複的。

回答

1

你的第一種情況的輸出是一個字節字符串。你的第二種情況的輸出是一個Unicode字符串。 Unicode字符串被隱式編碼爲終端編碼,或者如果無法確定終端編碼,則會導致錯誤,即ascii

不知道你的環境,你需要打印Unicode字符串默認值決定爲什麼編碼,ascii,或者明確自己的字符串編碼與.encode('utf8')

+0

打印之前,只要在字符串上調用.encode('utf8'),似乎已經修復了它 - 謝謝! – Dasmowenator

相關問題