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.