Я искал интернационализированные идентификаторы ресурсов, и меня беспокоила одна вещь.Как punycode различает аналогичные IRI?
Я понимаю, что для каждой метки в имени домена (xyzzy.plugh.com
имеет три метки, xyzzy
, plugh
и com
), следующий процесс выполняется, чтобы перевести его в представление ASCII, так что он может быть обработан в порядке по всему наследству программное обеспечение:
- Если он состоит исключительно из символов ASCII, он копируется как есть.
- Иначе:
- Сначала мы выводим
xn--
следуют все символы ASCII (пропуск не-ASCII). - Затем, если конечный символ не
-
, мы выводим-
, чтобы отделить ASCII от не-ASCII. - Наконец, мы кодируем каждый из символов, отличных от ASCII, с использованием punycode, чтобы они выглядели как ASCII.
- Сначала мы выводим
Мой вопрос тогда: как мы будем различать следующие два Unicode URIs?
http://aa☃.net/
http://☃aa.net/
Мне кажется, что как из них будет кодировать:
http://xn--aa-nfh.net/
просто потому, что информация о последовательности были потеряны для лейбла в целом.
Или я что-то пропустил в спецификации?
brunesto, ваши ссылки заставили меня провести еще несколько исследований, и оказалось, что вы были правы. Добавили мясо расследования, чтобы отразить ваш ответ, надеюсь, что вы не против. – paxdiablo