В RFC 3986 указано, что компонент хоста URI нечувствителен к регистру. . Однако в нем не указано, что означает «без учета регистра» в отношении символов UCS или UTF-8.
Примеры, приведенные в RFC (например, «<HTTP://www.EXAMPLE.com/
> эквивалентно <http://www.example.com/
>»), позволяют нам сделать вывод, что «нечувствительный к регистру» означает, по крайней мере, что символы A-Z считаются эквивалентными символу 32 перед ними в наборе символов UTF-8. , то есть а-я. Однако не упоминается, как следует обрабатывать символы за пределами этого диапазона. Таким образом, учитывая незакодированное, ненормализованное зарегистрированное имя www.OLÉ.com, я вижу три возможных формы нормализации, разрешенных RFC:
- Нижний регистр для www.olé.com, затем процентное кодирование для www.ol%E9.com
- Только строчные символы A-Z для www.olÉ.com, а затем процентное кодирование для www.ol%C9.com
- Процентное кодирование до www.OL%C9.com, а затем строчными буквами непроцентно закодированные части до www.ol%C9.com, что дает тот же результат, что и 2.
Так вот вопрос: что правильно? Если это случай 1., что определяет, какие символы считаются прописными, а какие строчными (и какие символы не имеют регистра)?