В моем HTML, можно ли использовать ссылку на символ «
» вместо «%20
» в веб-адресах?Могу ли я заменить% 20 на & nbsp в URL-адресах с пробелами?
Они оба пространства, не так ли?
В моем HTML, можно ли использовать ссылку на символ «
» вместо «%20
» в веб-адресах?Могу ли я заменить% 20 на & nbsp в URL-адресах с пробелами?
Они оба пространства, не так ли?
Короткий ответ: они оба используются для представления «пробелов», но они представляют разные пространства.
%20
- это URL-адрес экранирования для байта 32, который соответствует простому старому пространству практически в любой кодировке, которую вы, вероятно, будете использовать в URL-адресе.
- это ссылка на HTML-символ, которая на самом деле относится к символу 160 Юникода (а также ISO-8859-1 aka Latin-1). Это совсем другой космический персонаж - «неразрывное пространство». Хотя они выглядят почти одинаково, они разные персонажи, и маловероятно, что ваш сервер будет обрабатывать их одинаково.
Различия между этими двумя типами пространственных представлений в стороне, знаете ли вы, разрешены ли ссылки объектов сущности html в URL-адресах либо по спецификации, либо в практических реализациях? – Matt
@Matt Да и нет. Ссылки на символы HTML-символов разрешены в URL-адресах * в HTML-документах *. Фактически, амперсанды в URL-адресах в документах HTML должны быть экранированы с помощью HTML. Наличие «http: //example.com/foo? Bar = 1 & baz = 2'» в HTML фактически недействительно. Это должно быть '' http://example.com/foo?bar = 1 & baz = 2' ". Тем не менее, ссылка на объект HTML на самом деле не является« в URL ». Она находится в представлении HTML этого URL-адреса. В самом URL-адресе есть' & ', где HTML содержит' & '. –
@Matt Почти забыл: я считаю, что древние версии MSIE пытались использовать ссылки на символы символа HTML в представлениях форм для символов, которые не могли быть представлены в наборе символов, используемых для отправки формы. Это вообще не соответствует стандартам , что не слишком удивительно для MSIE. –
№ Ни одно из них не является пространством (технически). Оба представляют пространства по-разному. Приложите все усилия, чтобы НЕ иметь пробелы или представителей пробелов в ваших URL-адресах. Многие считают это более элегантным (меня включили), чтобы заменить пробелы _ или -
В зависимости от вашей точки зрения это не совсем правильно. '% 20' представляет пробел, но' 'представляет собой * неразрывное * пространство, технически отдельный символ. Поэтому, даже если было бы неплохо использовать HTML-экранирование в URL-адресах, это не сработает, потому что оно заменит один символ другим, изменив значение URL-адреса. –
Как это отличается от моего ответа? – Sampson
Не просто представляют пространства по-разному, представляют разные пространства. –
№ & nbsp; представляет собой объект неразрывного пространства HTML; этот объект не имеет смысла при использовании в файловой системе или где-либо еще, что может указывать URL. URL-адреса не кодируются в HTML.
Вы можете иметь неразрывные пробелы в именах файлов, по крайней мере, в некоторых файловых системах. Вероятно, это не очень хорошая идея, но говоря, что «этот объект не имеет смысла при использовании в файловой системе» идет слишком далеко. Это просто еще один персонаж. (И если вы ссылаетесь на ссылку сущности, , он говорил об использовании этого в HTML, поэтому браузер позаботится о преобразовании ссылки сущности в соответствующий символ.) –
% 20 это то, что вы получаете с кодировкой URL, так что это то, что вы должны использовать, если собираетесь использовать его в URL-адресе.
& nbsp; это объект HTML, который должен использоваться для «нераспадающегося пространства» в HTML-документе.
Нет, не в URL-адресах. То, что вы может do, заменяет пробелы в текстовом представлении URL.
Таким образом, вместо:
<a href="http://some.site/doc%20with%20spaces">http://some.site/doc%20with%20spaces</a>
вы можете иметь:
<a href="http://some.site/doc%20with%20spaces">http://some.site/doc with spaces</a>
Кто-нибудь знает, почему ' ', что У меня в нижней выборке не появляется? Раньше это было так ... – Tomalak
Потому что это превратилось в пространство! Использовать & nbsp; для того, чтобы он отображался правильно. –
Snap! Вы действительно думаете, что это причина? ;-) Серьезно - я думал, что раздел «код» должен отображать его содержимое * verbatim *. И я думал, что это делалось до недавнего времени. Теперь, если я напишу ' nbsp;', я боюсь, что это покажется в какой-то момент ... – Tomalak
Ни пробелы. Вы не должны использовать пробелы, но если для того, что когда-либо причине вы не можете избежать этого, вы просто должны быть в состоянии сделать ...
<a href="Web Page.aspx">Hey there</a>
... нажав на который будет автоматически перемещаться пользователю
WebSite/Web%20Page.aspx
Большинство людей стараются полностью избегать пробелов в именах файлов в URL-адресах. Они будут давать вам серьезную головную боль каждый раз, поэтому постарайтесь это сделать.
Если вы хотите иметь пробелы в URL-адресе, вам необходимо закодировать их с помощью% 20.
& nbsp используется браузером, чтобы узнать, как отображать страницу. Эта информация используется только для отображения. % 20 будет отправлено на сервер, который будет управлять всем необходимым для передачи веб-страницы вашим посетителям. Сервер не говорит html, поэтому сервер будет интерпретировать & nbsp как обычную часть имени файла и искать файл, названный так, как foo bar. Этот файл не будет найден. Гораздо хуже веб-сервер будет думать, что & начинает переменную часть URL-адреса и ищет только страницу foo, а затем пытается сгенерировать переменную nbsp и переменную панель, но он хочет увидеть любые значения для них. В целом веб-сервер не может обрабатывать URL-адрес с .
Сервер не говорит по HTML, но он говорил об этом, используя это в своем HTML. Браузер * * интерпретирует ссылки на символы в атрибутах, включая URL-адреса, и поэтому превратится в неразрывное пространство. Сервер никогда не увидит & (или «nbsp;», если на то пошло). –
Итак, сервер увидит нормальное пустое пространство. Это тоже плохо :) – Janusz
Нет, он увидит символ без разрыва. Это обычный персонаж из обычного пространства. –
Какую возможную причину вы могли бы хотеть сделать в первую очередь? У меня такое чувство, что я не хочу знать ... – Welbog
Что вы пытаетесь сделать точно? –
@Pup: Проблема в том, что URL-адреса и HTML - это две совершенно разные вещи, которые соответствуют различным правилам. Вы не можете предположить, что правило для одной системы автоматически истинно для другого, только потому, что они используются совместно. – Tomalak