2016-05-14 6 views
0

Из тестирования, похоже, пытается преобразовать как IDN, так и обычные доменные имена «просто работает» - например, если вход не нужно менять, punycode просто вернет вход.Могу ли я рассматривать все доменные имена как IDN без каких-либо негативных последствий?

punycode.toASCII('lancôme.com'); 

возвращается:

'xn--lancme-lxa.com' 

И

punycode.toASCII('apple.com'); 

возвращений:

'apple.com' 

Это выглядит большим, но это указано в любом месте? Могу ли я безопасно преобразовать все в punycode?

ответ

1

Это правильно. Если вы посмотрите, как процедура преобразования строк юникода в ascii punycode, процесс только изменяет любой символ не-ascii. Поскольку обычные домены не могут содержать символы не-ascii, если ваш конвертер правильно реализован, он никогда не преобразует строку pure-ascii.

Вы можете узнать больше о том, как юникода превращается в Punycode здесь: https://en.wikipedia.org/wiki/Punycode

Punycode указано в RFC 3492: https://www.ietf.org/rfc/rfc3492.txt, и это ясно говорит:

«Базовый код точки сегрегация» является очень простое и эффективное кодирование для базовых кодовых точек, встречающихся в расширенной строке : они просто копируются сразу.

Поэтому, если ваша расширенная строка состоит из базовых кодовых точек, она будет просто скопирована без изменений.

+0

С уважением, если вы добавите ссылку. – mikemaccana

+0

@mikemaccana Лучшая ссылка всегда спецификация :) – Wladston

+0

согласен - спасибо! – mikemaccana