传递非英语单词时出现python单代码服务器错误

时间:2011-10-17 13:31:02

标签: python google-app-engine unicode encode urllib

我使用其他搜索引擎构建了自定义搜索网页。等。

对于客户端我编码搜索条件并使用

发送到我的服务器

http://xxx.appspot.com/search?q=encodeUIComponent(qTerms

在服务器端(appengine - python)使用urllib

解码文本

喜欢qTerms= urllib.unquote_plus(qTerms)

并且我再次编码了这些血清。 使用qTerms= urllib.quote_plus(qTerms)

现在我从我的服务器发送qTermsto另一台服务器,我得到xml响应。

以上设计适用于纯英语单词,当我将非英语单词传递给下面的givin错误时:

Traceback (most recent call last): 
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py",          line 701, in __call__
    handler.get(*groups)
  File "/base/data/home/apps/s~searchepic/1.353951740301902288/search.py", line 124, in get
    qTerms = urllib.quote_plus(qTerms)
  File "/base/python_runtime/python_dist/lib/python2.5/urllib.py", line 1222, in quote_plus
    return quote(s, safe)
  File "/base/python_runtime/python_dist/lib/python2.5/urllib.py", line 1214, in quote
    res = map(safe_map.__getitem__, s)
KeyError: u'\u0c15' 

1 个答案:

答案 0 :(得分:2)

您需要传递quote()ASCII(str)字符串而不是unicode字符串。 您可能需要调用term.encode('utf8')并将结果传递给quote()