Какие символы Unicode разрешены в метках хоста IDN? - PullRequest
8 голосов
/ 17 мая 2010

В настоящее время я работаю над «правильным» валидатором URI, и в настоящее время все сводится к проверке имени хоста; остальное не так сложно.

Я застрял на метках имен хостов IDN (то есть, содержащих Unicode; на этом этапе были декодированы возможные строки, закодированные с помощью Punycode).

Моей первой идеей было в основном одно регулярное выражение для TLD, которые не поддерживают IDN, и одно для тех, которые поддерживают. Возможно, это может быть основано на списке Mozilla доменов верхнего уровня с поддержкой IDN . Соответственно, ^[a-zA-Z0-9\-]+$ и ^[a-zA-Z0-9\-\p{L}]+$. Однако это не идеальная ситуация, поскольку каждый регистратор IDN может решить, какие символы разрешить.

Я ищу правильную, согласованную и актуальную таблицу данных символов Unicode, разрешенных в различных TLD. Начинает казаться, что я сам должен найти все данные на сайтах российских и китайских реестров (что довольно сложно).

Поэтому, прежде чем пытаться собрать все эти данные самостоятельно, я подумал, существует ли такой список. Или есть лучшие подходы, лучшие / общие практики и т. Д.? (Я хочу, чтобы проверка была как можно более строгой.)

Ответы [ 2 ]

2 голосов
/ 31 июля 2014

IANA поддерживает список всех кодовых точек и их статус на https://www.iana.org/assignments/idna-tables-6.3.0/idna-tables-6.3.0.xhtml#idna-tables-properties

Все помеченные PVALID безопасны в использовании. Те, которые отмечены CONTEXTO или CONTEXTJ, имеют больше правил для подражания. Прочитайте RFC5892 (IDNA) и RFC6452 (изменение статуса пары символов) для всех подробностей крови.

1 голос
/ 17 мая 2010

Не можете ли вы преобразовать все домены Unicode в punycode и проверить это? Поскольку DNS в любом случае не поддерживает настоящие символы UTF-8, это может быть лучшим решением.

...