Не уверен, что это хорошая идея, но, как уже упоминалось в других комментариях, и, насколько я понимаю, многие символы Unicode действительны в URL-адресах HTML5 .
Например, href
документы говорят http://www.w3.org/TR/html5/links.html#attr-hyperlink-href:
Атрибут href в элементах a и area должен иметь значение, которое является допустимым URL-адресом, потенциально окруженным пробелами.
Тогда определение «действительного URL» указывает на http://url.spec.whatwg.org/,, которое определяет кодовые точки URL как:
ASCII буквенно-цифровой, "!", "$", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "=", "?", "@", "_", "~" и кодовые точки в диапазонах от U + 00A0 до U + D7FF, U + E000 до U + FDCF, U + FDF0 до U + FFFD, U + 10000 до U + 1FFFD, U + 20000 до U + 2FFFD, U + 30000 до U + 3FFFD, U + 40000 до U + 4FFFD, U + 50000 до U + 5FFFD, U + 60000 до U + 6FFFD, U + 70000 до U + 7FFFD, U + 80000 до U + 8FFFD, U + 90000 до U + 9FFFD, U + A0000 до U + AFFFD, U + B0000 до U + BFFFD, U + C0000 - U + CFFFD, U + D0000 - U + DFFFD, U + E1000 - U + EFFFD, U + F0000 - U + FFFFD, U + 100000 - U + 10FFFD.
Термин «кодовые точки URL» затем используется в нескольких частях алгоритма синтаксического анализа, например, для относительного состояния пути :
Если c - это не точка кода URL, а не "%", ошибка синтаксического анализа.
Также валидатор http://validator.w3.org/ проходит для URL-адресов, таких как "你好"
, и не проходит для URL-адресов с символами, такими как пробелы "a b"