我正在尝试处理 python 2.7.2 中的 unicode。我知道有这样的.encode('utf-8')
东西,但是当我添加它时,有 1/2 的时间会出错,而当我不添加它的时候,有 1/2 的时间会出错。
有什么方法可以告诉 python - 我认为是一种最新和现代的语言,只使用 unicode 作为字符串,而不是让我不得不放屁.encode('utf-8')
?
我知道... python 3.0 应该做到这一点,但我不能使用 3.0 和 2.7 反正不是那么旧...
例如:
url = "http://en.wikipedia.org//w/api.php?action=query&list=search&format=json&srlimit=" + str(items) + "&srsearch=" + urllib2.quote(title.encode('utf-8'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128)
更新
如果我.encode
从我的所有代码中删除我的所有语句并添加# -*- coding: utf-8 -*-
到我的文件顶部,#!/usr/bin/python
那么我得到以下内容,就像我根本没有添加一样# -*- coding: utf-8 -*-
。
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py:1250: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
return ''.join(map(quoter, s))
Traceback (most recent call last):
File "classes.py", line 583, in <module>
wiki.getPage(title)
File "classes.py", line 146, in getPage
url = "http://en.wikipedia.org/w/api.php?action=query&prop=revisions&format=json&rvprop=content&rvlimit=1&titles=" + urllib2.quote(title)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 1250, in quote
return ''.join(map(quoter, s))
KeyError: u'\xf1'
我没有手动输入任何字符串,而是从网站解析 HTML 和 json。所以脚本/字节流/无论它们是什么,都是由python创建的。
更新 2我可以移动错误,但它只是不断出现在新的地方。我希望 python 会成为一个有用的脚本工具,但看起来在 3 天没有运气之后我会尝试另一种语言。很遗憾,python 预装在 osx 上。我已将修复我发布的错误的一个实例的答案标记为正确。