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 に答える