IDNA — краткая история и современное состояние
Стандарт «Интернационализированные доменные имена в приложениях (IDNA)»
впервые был определен IETF в 2003 году как IDNA2003. Он содержал алгоритм
Nameprep для преобразования кодов символово Unicode в элементах доменного имени к
стандартному виду и алгоритм Punycode для кодирования меток, состоящих из кодов
Unicode в ASCII. Nameprep включает в себя преобразования, такие как замена
верхнего регистра на нижний.
После того как был накоплен некоторый опыт работы с IDNA, IETF разработала и
опубликовала в 2010 году пересмотренную спецификацию, известную как IDNA2008.
В спецификации IDNA2008 были введены термины U-метка и A-метка, а этап
Nameprep был исключен с рекомендацией выполнять преобразование регистра в
соответствии с языковым стандартом и средой приложения. В 2011 году IDNA2008
был обновлен для поддержки Unicode 6.0 в RFC 6452 и продолжает пересматриваться
IETF.
На практике слишком во многих реализациях все еще используется IDNA2003.
Немногие библиотеки используют таблицы (например, включенные в IDNA2003),
созданные для IDNA2008. Для IDNA2008 не существует языковых правил
преобразования, кроме стандартных правил нормализации, включенных в стандарт Unicode.
Единственным исключением является несколько правил преобразования из UTS#46,
«Обработка Unicode для обеспечения совместимости с IDNA». Они определяют,
следует ли принимать или преобразовывать ряд общих символов, которые подлежат
преобразованию согласно IDNA2003, но разрешены в качестве символов в IDNA2008.
Важно, чтобы приложения обрабатывали эти символы в соответствии с IDNA2008, а
не IDNA2003, и чтобы при использовании UTS#46 обеспечивалась совместимость с
IDNA2008.