Могут ли HTTP URI содержать не-ASCII символы? - PullRequest
18 голосов
/ 24 марта 2010

Я пытался найти это в соответствующем RFC, IETF RFC 3986 , но не смог понять это.

Разрешены ли URI для HTTP в кодировке Unicode или не-ASCII?

Не могли бы вы привести раздел и RFC, который поддерживает ваш ответ.

Примечание: для тех, кто может подумать, что это не связано с программированием - это так. Это связано с фильтром ISAPI, который я создаю.


Добавление

Я прочитал раздел 2.5 RFC 3986. Но RFC 2616, который, как я считаю, является текущим протоколом HTTP, предшествует 3986, и по этой причине я предполагаю, что он не может быть совместим с 3986. Более того, даже если или когда HTTP RFC обновляется, все еще будет возникать проблема рационализации - другими словами, поддерживает ли HTTP URI ВСЕ условия RFC3986, включая все, что подходит для включения символов, отличных от US-ASCII?

Ответы [ 6 ]

6 голосов
/ 24 марта 2010
4 голосов
/ 24 марта 2010

Нет, они не допускаются. Просто проверьте ABNF в RFC 3986.

4 голосов
/ 24 марта 2010

Вот пример: ☃.net.

Что касается соответствующего раздела RFC 3986, я думаю, что вы смотрите на 2.5 .

EDIT:

Видимо переполнение стека не определяет это как правильный URL. Вам придется скопировать и вставить в свой браузер.

0 голосов
/ 24 марта 2010

RFC 3986 заменяется RFC 3987, который полностью поддерживает Unicode и предоставляет правила сопоставления с / с URI стиля RFC 3986.

0 голосов
/ 24 марта 2010

Многие браузеры не поддерживают URI с символами Unicode (я реализовал их на веб-сайте, который я создал - blogvani.com), и Google должным образом сканирует и сохраняет их нетронутыми. Я не думаю, что это работает на доменах верхнего уровня, по крайней мере, не с регистратором, а не напрямую.

Для доменов верхнего уровня, если у вас есть домен, зарегистрированный в Unicode (например, люди могут регистрировать домены на хинди), он будет преобразован в соответствующий код в ASCII (что-то, что может выглядеть как jdhfks3243-32434.com). ..

Довольно забавно видеть, как это маршрутизируется, и осознавать, что вы на самом деле не переходите в домен Unicode, даже если это так выглядит.

0 голосов
/ 24 марта 2010

Раньше не английские символы не были разрешены в DNS и URL / URI Был хак, чтобы разрешить их, используя% encoding в URI. Однако многие страны, такие как Россия и Китай, начинают использовать DNS с использованием нелатинских символов. Вот ссылка на один из этих стандартов

...