Главное:
Я храню несколько доменов в базе данных после преобразования каждого доменного имени в его версию IDNA. Мне нужно знать максимальную длину такого доменного имени, преобразованного в IDNA, чтобы я мог определить максимальную длину поля базы данных.
Известный факт:
Теперь я знаю, что максимальное количество символов в имени домена (включая любые поддомены) составляет 255 символов.
Где я это потерял:
На первый взгляд это просто, но... означает ли это обычные символы ascii международных символов (подумайте о кодировке UTF-8)?
Чтобы дать вам пример: домен «müller.de» имеет 9 символов, если я игнорирую тот факт, что «ü» является международным символом, для представления которого требуется больше байтов. Версия IDNA «müller.de» — «xn--mller-kva.de», состоящая из 16 символов. Это показывает, что существует определенная разница в максимальной длине в зависимости от того, "конвертирован" ли он в IDNA или нет.
В зависимости от того, какие символы они имеют в виду, максимум 255 символов может быть версией с международными символами, версией, преобразованной в IDNA, или даже и тем, и другим.
И тут я немного запутался... тем более, что я должен учитывать, что не все домены будут вменяемыми и все такое, как "öüßüöäéèê.example.äöüßüöäéèê-äöüßüöäéèê.test.äöüßüöäéèê.com" em> и еще хуже можно было ожидать.
Так что "гадать" и "надеяться на лучшее" - не вариант. Мне нужно знать наверняка...
Вопрос:
На основании известного факта, что максимальное количество символов в имени домена (включая любые субдомены) составляет 255 символов... Какова максимальная длина доменного имени, преобразованного в IDNA? сильный>
Или они имели в виду, что преобразованная версия IDNA (punycode) также ограничена 255 символами (что означало бы, что домены с международными символами/символами Unicode на самом деле будут иметь более короткие ограничения в их представлении Unicode, потому что их преобразованная версия IDNA должна будет учитывать 255 символов лимит)?