【发布时间】:2017-01-12 18:32:04
【问题描述】:
我正在从网站获取最新的足球比分并在桌面 (OS X) 上发送通知。我正在使用 BeautifulSoup 来抓取数据。我遇到了导致此错误的 unicode 数据问题
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 2: ordinal not in range(128).
所以我在开头插入了这个,解决了在终端上输出的问题。
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
但是当我在桌面上发送通知时,问题就存在了。我使用终端通知器发送桌面通知。
def notify (title, subtitle, message):
t = '-title {!r}'.format(title)
s = '-subtitle {!r}'.format(subtitle)
m = '-message {!r}'.format(message)
os.system('terminal-notifier {}'.format(' '.join((m, t, s))))
下图描绘了终端上的输出与桌面通知的对比。
终端输出。
桌面通知
另外,如果我尝试替换字符串中的逗号,我会得到错误,
new_scorer = str(new_scorer[0].text).replace(",","")
File "live_football_bbc01.py", line 41, in get_score
new_scorer = str(new_scorer[0].text).replace(",","")
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 2: ordinal not in range(128)
如何获得桌面通知的输出,例如终端上的输出?谢谢!
编辑:桌面通知的快照。 (已解决)
【问题讨论】:
-
不要调用str,根据需要进行编码/解码。你为什么打电话给 str 呢?此外,您的重新加载逻辑是一个糟糕的主意。 stackoverflow.com/questions/3828723/…。为什么应该删除像stackoverflow.com/a/31137935/2141635 这样的答案的另一个例子
-
然后我在终端上得到正确的输出,但在桌面通知上,字符串中带有 'u',如` 'ukrkic' 和 'uAg\xc3\b...`
-
你使用的是python 2吗?如果您需要并且不需要,这是 Python 3 的默认行为更方便的一个空间。
-
哦,是吗?我正在使用 Python 2.7。会调查的。也许是时候切换到 Python 3 了。
标签: python unicode utf-8 ascii