Технические условия готовности к универсальному принятию
Чтобы приложение или сайт считались поддерживающими универсальное принятие, они должны удовлетворять следующим требованиям:
Требования высокого уровня
Обеспечивающее универсальное принятие (UA) приложение или сервис:
- Поддерживает все допустимые доменные имена.
См. RFC 5892; - Позволяет использовать для доменных имен и адресов электронной
почты все допустимые наборы символов.
Принимает символы Unicode и ASCII; - Может правильно отображать все символы в строках Unicode.
См. RFC 3490. (Обратите внимание, что в Unicode регулярно добавляются новые наборы символов); - Может правильно отображать строки с направлением письма справа
налево (RTL), например, на арабском и иврите.
Сведения об алфавитах RTL см. в RFC 5893; - Может передавать данные между приложениями и сервисами в кодировке Unicode в формате UTF-8 и,
при необходимости, в других кодировках, которые могут быть преобразованы в кодировку Unicode
в формат UTF-8 и обратно.
Сведения о UTF-8 см. в RFC 3629; - Предлагает API, которые поддерживают UTF-8.
- Правильно обрабатывает адреса EAI.
В частности, не преобразует IDN-домены в адресах в A-метки. - Может отправлять и получать электронную почту, независимо от имени
домена или набора символов.
См. RFC 6530; - Хранит доменные имена и адреса электронной почты в кодировке Unicode в действующих форматах, которые могут быть преобразованы в UTF-8.
- Поддерживает все доменные имена верхнего уровня, включенные в
официальный список TLD ICANN, независимо от их длины или набора
символов.
Официальный список см. здесь.
Важные для разработчика аспекты
Поскольку многие существующие программные системы содержат жестко запрограммированные предположения о доменах и адресах электронной почты, может возникнуть необходимость изменения кода для распознавания IDN-доменов, новых TLD и почтовых адресов EAI. В этом разделе рассматривается, какие изменения кода позволят разработчикам обеспечить универсальное принятие.
Разработка совместимого и гибкого программного обеспечения
Общим принципом разработки программного обеспечения является принцип
надежности, сформулированный Джоном Постелом в RFC 793:
«Будьте консервативны в том, что делаете, и будьте либеральны в том, что
принимаете от других».
То есть будьте консервативны в том, что отправляете: в любой области, где
спецификация может быть неоднозначной или неясной, избегайте всего, что может
удивить других. С другой стороны, при получении принимайте все, что является
предположительно допустимым. Но это конечно не значит, что нужно подстраивать код так, чтобы принимать ошибочные данные, т.к. подобная практика приведет возникновению ошибок в работе самого приложения.