На вопрос: «А действительно ли URL-это текст?»
Это зависит от контекста, в некоторых языках или библиотеках (например, Java, я не уверен насчет Python), URL может быть представлен внутри как объект. Тем не менее, URL всегда имеет четко определенное текстовое представление. Таким образом, хранение текстового представления гораздо более переносимо, чем хранение внутреннего представления, используемого любым текущим выбранным языком.
Синтаксис и семантика URL-адреса охватываются многими стандартами, рекомендациями и реализациями, но я думаю, что наиболее авторитетным источником для анализа и построения правильных URL-адресов будет RFC 2396 .
По вопросу о юникоде в разделе 2.1 рассматриваются не-ascii символы.
(Редактировать: изменил rfc-ссылку на самое новое издание, спасибо, С.Лотт)