Страница, которую Вы связываете с http://msdn.microsoft.com/en-us/library/6x6y6z4d.aspx , говорит, для чего они были, который был способом обработать nullable bools, прежде чем nullable типы значения были представлены.
я предположил бы в наше время, что они хороши для того же вида материала как ArrayList - т.е. абсолютно ничто.
Из документов :
urllib.quote(string[, safe])
Заменить специальные символы в строке используя escape-последовательность% xx. Буквы, цифры, и символы "_.-" никогда не цитируется. По умолчанию эта функция предназначен для цитирования раздела пути URL-адреса. Необязательный безопасный параметр указывает дополнительные символы, которые не следует заключать в кавычки - по умолчанию значение '/'
Это означает, что передача '' для безопасности решит вашу первую проблему:
>>> urllib.quote('/test')
'/test'
>>> urllib.quote('/test', safe='')
'%2Ftest'
Что касается второй проблемы, есть отчет об ошибке здесь . По-видимому, это было исправлено в python 3. Вы можете обойти это, закодировав как utf8 следующим образом:
>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller
Кстати, посмотрите urlencode
Обратите внимание , что urllib.quote
перемещен в urllib.parse.quote
в Python3