2
# -*- coding: utf-8 -*-
from pyquery import PyQuery as pq
from urllib import urlencode
from urllib2 import Request,urlopen
    def sendRequest(url, data = None, headersOnly = False):
    headers  = { 'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US;)' }
    request  = Request(url, data, headers)
    return urlopen(request).read()

resp = sendRequest("https://foursquare.com/v/rivers-edge-cafe--    morrison/4c1907776e02b7132eae627b")
print pq(resp)("#venueCategories").text()

输出应为 Café、Burger Joint、Sandwich Place 但出现异常:

Traceback (most recent call last):
  File "unicodeerr1.py", line 11, in <module>
    print pq(resp)("#venueCategories").text()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 3: ordinal not in range(128)
4

2 回答 2

7

您需要为源代码指定编码,或者使用字符转义。

# -*- coding: utf-8 -*-

或者

print 'caf\xc3\xa9' # UTF-8 representation of e accent egu.

不过,您可能想使用 Unicode 文字(这里使用 Unicode 转义字符):

print u'caf\u00e9'

请务必阅读Unicode HOWTO以完全理解这里发生的事情。其他有用的文件:

请注意,您的特定错误与 python 2.5 与 2.7 没有任何关系,而是与您打印的任何内容的输出编码有关。在您使用 python2.5 的服务器上,没有指定编码或明确设置为 ASCII,但在您使用 python 2.7 的本地计算机上,您很可能正在处理支持 UTF-8 的终端。

于 2012-08-23T07:51:05.537 回答
0

我刚刚升级到 python 2.7,我所有的编码问题都得到了修复。

于 2012-09-27T09:55:08.423 回答