Ошибка сервера uni-кода Python при передаче не английских слов - PullRequest
0 голосов
/ 17 октября 2011

Я создаю настроенную поисковую веб-страницу, используя другую поисковую систему. как.

На стороне клиента я кодирую условия поиска и отправляю на мой сервер, используя

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

На стороне сервера (appengine - python) я декодирую текст, используя urllib

как qTerms= urllib.unquote_plus(qTerms)

и снова я закодировал стермы. используя qTerms= urllib.quote_plus(qTerms)

Теперь я отправляю qTerms на другой сервер со своего сервера и получаю xml-ответ.

Приведенные выше конструкции хорошо работают для чистых английских слов, когда я пропускаю неанглийские слова, это дает ошибку, как показано ниже:

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 Ответ

2 голосов
/ 17 октября 2011

Вам нужно передать ASCII (str) строку quote () вместо строки Юникода.
Вам необходимо позвонить term.encode('utf8') и передать результат в quote ()

...