Поискал по форуму и долго гуглил - но видимо из - за незнания сути проблемы решить не могу на данный момент следующую проблему:
Есть задача - приходит get запрос с параметром referal содержащим текст document.referrer - которому я предварительно делаю encodeURIComponent:
В итоге на сервере я имею в переменной ref например следующее:
http://yandex.ru/yandsearch?text=%D1%81%D0%B5%D0%BA%D1%81+%D1%88%D0%BE%D0%BF&lr=5&stpar2=%2Fh1%2Ftm34%2Fs3&stpar4=%2Fs3&stpar1=%2Fu0
или
ref: http://www.google.ru/search?q=%D1%81%D0%B5%D0%BA%D1%81+%D1%88%D0%BE%D0%BF&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox
Так, здесь вроде бы пока все хорошо, пояснять зачем я делаю encodeURIComponent перед отправкой думаю не следует - мне нужна строка целиком включая параметры идущие за спецсимволами вроде &.
Насколько я знаю по RFC - encodeURIComponent заэскейпил строку в UTF8, т.о тут строка содержащая заэскепенный текст скорее всего в кодировке utf8
Далее мне надо выделить фразу по которой был поиск, которая в google отвечает за это:
def parse_search(url):
try:
parsed = urlparse.urlsplit(url)
network = parsed[1]
query = parsed[3]
except (AttributeError, IndexError):
return (None, None, None)
for engine, param in SEARCH_PARAMS.iteritems():
match = re.match(NETWORK_RE % engine, network)
if match and match.group(2):
term = cgi.parse_qs(query).get(param)
if term and term[0]:
term = ' '.join(term[0].split()).lower()
return (engine, network, term)
return (None, network, None)
После этого параметр term содержит фразу:
logging.info("term: %s", term)
[I 091113 14:08:11 demo:333] term: ñ�ðµðºñ� ñˆð
Далее мне надо обратно передать эту строку в json
пытался так
term = simplejson.dumps(term)
'term': '"\\u00f1\\u0081\\u00f0\\u00b5\\u00f0\\u00ba\\u00f1\\u0081 \\u00f1\\u0088\\u00f0\\u00be\\u00f0\\u00bf"',
При этом передавая строку в таком виде
'title': u'\u0421\u0435\u043a\u0441 \u0448\u043e\u043f'
——–
Попытка 2
Вопрос: как строку
term = (urllib.unquote_plus(term))
'term': u'\xf1\x81\xf0\xb5\xf0\xba\xf1\x81 \xf1\x88\xf0\xbe\xf0\xbf'
u'\u0421\u0435\u043a\u0441 \u0448\u043e\u043f'
читал форум здесь
http://python.su/forum/viewtopic.php?id=5370
http://python.su/forum/viewtopic.php?id=3436
не помогло пока.