Хотя это настоятельно рекомендуется ( Источник W3C через Википедию ) для веб-серверов, поддерживающих точку с запятой в качестве разделителя элементов URL-запросов (в дополнение к амперсанду), это, как правило, не соблюдается.
Например, сравните
http://www.google.com/search?q=nemo & oe = utf-8
http://www.google.com/search?q=nemo ; ае = UTF-8
результаты. (В последнем случае точка с запятой, или была на момент написания этого текста , рассматривалась как обычный символ строки, как если бы URL был: http://www.google. com / search? q = nemo % 3B oe = utf-8 )
Хотя первая библиотека для разбора URL-адресов, которую я пробовал, ведет себя хорошо:
>>> from urlparse import urlparse, query_qs
>>> url = 'http://www.google.com/search?q=nemo;oe=utf-8'
>>> parse_qs(urlparse(url).query)
{'q': ['nemo'], 'oe': ['utf-8']}
Каков текущий статус принятия точки с запятой в качестве разделителя, и каковы потенциальные проблемы или некоторые интересные заметки? (как с точки зрения сервера, так и с точки зрения клиента)
Пока ваш HTTP-сервер и ваше серверное приложение принимают точки с запятой в качестве разделителей, все в порядке. Недостатков не вижу. Как вы сказали, спецификация W3C на вашей стороне :
Мы рекомендуем, чтобы разработчики HTTP-сервера, и в частности разработчики CGI, поддерживали использование ";" вместо «&», чтобы избавить авторов от необходимости экранировать символы «&» таким образом.