Python 由于命令Shell中的非Unicode字符,Scrapy print语句无法工作

Python 由于命令Shell中的非Unicode字符,Scrapy print语句无法工作,python,unicode,scrapy,command-prompt,Python,Unicode,Scrapy,Command Prompt,我正在Windows Vista 64位上运行Python.org 2.7 64位版本。我有一个刮刀,我在BBC体育网站上测试,它似乎工作正常。后来我转到维基百科,只是想看看它是否能在其他网站上使用。代码如下: from scrapy.spider import BaseSpider from scrapy.selector import Selector from scrapy.utils.markup import remove_tags class MySpider(BaseSpider

我正在Windows Vista 64位上运行Python.org 2.7 64位版本。我有一个刮刀,我在BBC体育网站上测试,它似乎工作正常。后来我转到维基百科,只是想看看它是否能在其他网站上使用。代码如下:

from scrapy.spider import BaseSpider
from scrapy.selector import Selector
from scrapy.utils.markup import remove_tags

class MySpider(BaseSpider):
    name = "bbc"
    allowed_domains = ["wikipedia.org"]
    start_urls = ["http://en.wikipedia.org/wiki/Asia"]

    def parse(self, response):
        titles = response.selector.xpath("normalize-space(//title)")
        for titles in titles:
            body = response.xpath("//p").extract()
            body2 = "".join(body)
            body2 = unicode(body2)
            print remove_tags(body2)
我之所以添加unicode语句,是因为我不断发现一个非unicode字符的错误,而Command Shell无法在我所查看的所有Wikipedia页面上显示该字符

我不知道为什么这个语句没有将我的scrape转换成Unicode并允许打印出来。有人能看到这里的问题吗


谢谢

看起来scrapy已经返回了Unicode,而
连接不应该改变这一点。所以
body2=unicode(body2)
什么都不做。您可能已将终端的编码设置为无法处理非ascii字符-如果显式编码内容会发生什么情况<代码>打印编码(删除标签(body2),“utf-8”)
?@peterdGlopper您好,谢谢回复。当我使用您的上述建议时,我会在命令Shell中打印以下错误日志:“exceptions.NameError:未定义全局名称‘encode’”'Ah right,应该是
remove_tags(body2)。encode('utf-8')
。非常好。这非常有效。这里发生的事情是,Unicode对象上的
print
尝试使用stdout的编码对其进行编码,如下所述:在本例中,这是一种无法处理某些字符的编码。通过将其编码为utf-8,可以避免该问题。因此,无法保证您的窗口能够正确显示utf-8,但Windows在Unicode支持方面已经取得了长足的进步。