我正在使用BeautifulSoup4
编写一个Python程序,当我获取一个包含样式化引号u'\u2019'
的HTML元素时,我能够像这样打印出整个元素:
代码:
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)
为什么会这样?为什么这一刻起作用,下一刻却不起作用?它是可复制的。你知道吗
第一个case的输出是一个字节字符串。第二个case的输出是一个Unicode字符串。Unicode字符串被隐式编码为终端编码,或者
ascii
如果无法确定终端编码,则会导致错误。你知道吗在不了解您的环境的情况下,您需要确定为什么打印Unicode字符串默认为在
ascii
中编码,或者自己使用.encode('utf8')
显式编码字符串。你知道吗相关问题 更多 >
编程相关推荐