UnicodeEncodeError:' ascii'编解码器不能编码字符' \ u2013'

时间:2017-10-06 19:00:08

标签: python unicode encoding beautifulsoup sublimetext3

我在macOS上,我使用Python 3.6和Sublime Text 3.当我运行我的脚本时,我得到了标题中的错误。我已经尝试了我能在网上找到的所有东西来解决这个问题,但我仍然有同样的问题而且不知道要解决它。这是我的剧本:

import requests
import subprocess
import time

from bs4 import BeautifulSoup

response = requests.get("https://news.ycombinator.com")
soup = BeautifulSoup(response.content, "html.parser")
for story in soup.find_all(class_="storylink"):
    title = story.get_text()
    print(title + "\n")

完整的堆栈跟踪是:

The Land of Lisp

Traceback (most recent call last):
  File "/Users/dave/Programming/Python/ReadHackerNews/read_hackernews.py", line 12, in <module>
Lost Laughs in Leisure Suit Larry

    print(title + "\n")
UnicodeEncodeError: 'ascii' codec can't encode character '\u2013' in position 23: ordinal not in range(128)
[Finished in 1.2s]

问题在于title变量,是的,我知道它包含一些unicode字符,python不知道如何打印(因为它使用ASCII ???)。

我工作的是,以13\xc2\xa0comments的形式打印unicode字符。但是我想把它打印成unicode角色......

如果你运行脚本,你必须要有一些&#34;运气&#34;因为并非hackernews上的每个标题都包含一个unicode字符。此外,say命令仅出现在macOS上 - 如果您在另一个操作系统上进行测试,请将其删除。

编辑:为了好玩,我试图在终端中执行脚本,在那里我没有收到错误!所以这与崇高的文本3 ...

有关

EDIT2:如果我添加sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

,它会起作用

0 个答案:

没有答案