Как вернуть специальные символы в экранированный url
Перейти к содержимому

Как вернуть специальные символы в экранированный url

  • автор:

экранирование специального символа в URL

Я использую url для открытия html-страницы, и я отправляю данные в querystring с URL-адресом страницы.

2 ответа

У вас есть 3 варианта:

Но в вашем случае, если вы хотите передать URL-адрес в параметр GET другой страницы, вы должны использовать escape или encodeURIComponent, но не encodeURI.

Чтобы быть в безопасности и убедиться, что вы избежали всех зарезервированных символов, указанных в RFC 1738 и RFC 3986, вы должны использовать комбинацию encodeURIComponent, escape и замену для звездочки (‘*’) следующим образом:

[Пояснение] Хотя RFC 1738: Uniform Resource Locators (URL) указывает, что символы *. ‘, (И) могут оставаться незакодированными в URL-адресе,

Таким образом, только буквенно-цифровые символы, специальные символы «$ -_. +! * ‘(),» и зарезервированные символы, используемые для их зарезервированных целей, могут использоваться unencoded в URL.

RFC 3986, стр. 12-13, говорится, что эти специальные символы зарезервированы как субграничники.

sub-delims = «! «/» $»/» & «/» ‘ «/» ( «/» )» /»* «/» + «/», «/»; «/» http://qaru.site/questions/219410/javascript-string-replace-with-regular-expression-and-function-as-arguments» title=»См. Вопрос о стеке перекрытия на» rel=»nofollow noreferrer»> второй параметр для первой замены ( ) вызов функции. Как используется здесь, замените вызовы функцией escape() один раз для каждого соответствующего специального символа!, ‘, (Или), и escape просто возвращает» escape-последовательность» для этого символа для замены, который повторно собирает любые экранированные символы с другим фрагменты.]

Кроме того, хотя некоторые веб-сайты даже идентифицировали asterkisk (*) как зарезервированный символ в RFC3986, они не включают его в их средство кодирования URL-компонентов.

escaping special character in a url

I am using a url to open a html page, and i am sending data in querystring withe the page url.

For example: abc.html?firstParameter=firstvalue&seconedParameter=seconedvalue

Brane's user avatar

2 Answers 2

You have 3 options:

But in your case, if you want to pass a url into a GET parameter of other page, you should use escape or encodeURIComponent, but not encodeURI.

Yogesh Prajapati's user avatar

To be safe and ensure that you’ve escaped all the reserved characters specified in both RFC 1738 and RFC 3986 you should use a combination of encodeURIComponent, escape and a replace for the asterisk(‘*’) like this:

[Explanation] While RFC 1738: Uniform Resource Locators (URL) specifies that the *, !, ‘, ( and ) characters may be left unencoded in the URL,

Thus, only alphanumerics, the special characters «$-_.+!*'(),», and reserved characters used for their reserved purposes may be used unencoded within a URL.

RFC 3986, pages 12-13, states that these special characters are reserved as sub-delimiters.

reserved = gen-delims / sub-delims

Also while some websites have even identified the asterkisk(*) as being a reserved character under RFC3986, they don’t include it in their URL component encoding tool.

экранирование специального символа в URL-адресе

Я использую URL-адрес, чтобы открыть html-страницу, и я отправляю данные в строке запроса с URL-адресом страницы.

задан 27 мая ’12, 07:05

2 ответы

У вас есть опции 3:

Но в вашем случае, если вы хотите передать URL-адрес в параметр GET другой страницы, вы должны использовать escape или encodeURIComponent, но не encodeURI.

ответ дан 27 мая ’12, 07:05

Спасибо Йогеш, подскажите, пожалуйста, как использовать эти методы в javascript. могу ли я вызвать эти методы, например URL.escape(); — ARV

escape устарел. Не используйте его. — Квентин

Чтобы быть в безопасности и убедиться, что вы экранировали все зарезервированные символы, указанные как в RFC 1738, так и в RFC 3986, вы должны использовать комбинацию encodeURIComponent, escape и заменить звездочку (‘*’) следующим образом:

[Объяснение] В то время как RFC 1738: Унифицированные указатели ресурсов (URL) указывают, что символы *, !, ‘, ( и ) могут быть оставлены незакодированными в URL-адресе,

Таким образом, только буквенно-цифровые символы, специальные символы «$-_.+!*'(),» и зарезервированные символы, используемые для их зарезервированных целей, могут использоваться незакодированными в URL-адресе.

В RFC 3986, стр. 12-13, указано, что эти специальные символы зарезервированы в качестве подразделителей.

зарезервировано = общие / частичные разделители

gen-delims = «:» / «/» / «?» / «#» / «[» / «]» / «@»

подразделы = «!» / «$» / «&» / «‘» / «(» / «)» / «*» / «+» / «,» / «;» знак равно

Функция escape() устарела, но может использоваться для URL-кодирования восклицательного знака, одинарной кавычки, левой и правой скобки. И поскольку существует некоторая двусмысленность в отношении того, должна ли звездочка быть закодирована в URL-адресе, и это не помешает закодировать, вы можете явно закодировать, используя что-то вроде вызова функции replace(). [Обратите внимание, что функция escape() передается как второй параметр для первого вызова функции replace(). Как используется здесь, replace вызывает функцию escape() один раз для каждого совпавшего специального символа !, ‘, ( или ), а escape просто возвращает «escape-последовательность» для этого символа обратно для замены, которая повторно собирает любые экранированные символы с другим фрагменты.]

Кроме того, хотя некоторые веб-сайты даже определили звездочку (*) как зарезервированный символ в соответствии с RFC3986, они не включают его в их инструмент кодирования компонента URL.

Русские Блоги

Кодировка текста JS включает в себя 3 функции: escape, encodeURI, encodeURIComponent , Соответствующие 3 функциям декодирования: unescape, decodeURI, decodeURIComponent
1. При передаче параметров необходимо использовать encodeURIComponent, чтобы объединенный URL-адрес не был обрезан специальными символами, такими как #.
Например: <script language = "javascript"> document.write (‘<a href = "http://passport.baidu.com/?logout&aid=7&u= + encodeURIComponent (" http://cang.baidu.com/bruce42 ") +"> Выход </a> ‘); </ script>
2.Вы можете использовать encodeURI в целом при выполнении перенаправления URL.
Например: Location.href = encodeURI ("http://cang.baidu.com/do/s?word= & amp; ct = 21");
3, JS может использовать escape при использовании данных
Например: запись истории в коллекции.
4. Когда escape кодирует значения Unicode, отличные от 0-255, он выводит формат% u ****. В других случаях результаты кодирования escape, encodeURI и encodeURIComponent совпадают.
Наиболее часто используемым является encodeURIComponent, который представляет собой кодировку URL, которая преобразует специальные символы, такие как китайский и корейский, в формат UTF-8, поэтому, если вы передаете encodeURIComponent в фоновый режим, вам необходимо декодировать UTF-8 в фоновом режиме. (Метод кодирования в форме такой же, как метод кодирования текущей страницы)
Есть 69 экранированных символов: *, +, -. /, @, _, 0-9, a-z, A-Z
encodeURI не кодирует 82 символа. #, $, &, ‘, (,), *, + . -. /. ;, =. @, _,

, 0- 9, a-z, AZ
encodeURIComponent не кодирует 71 символ. ‘, (,), *, -. _,

Функция urlencode, Urldecode используется для декодирования закодированной строки Urldecode и ее возврата.

Интеллектуальная рекомендация

[Передача] класс для масштабирования в соответствии с динамическими центрами

См. Кто-то здесь, чтобы представить класс ротатора Bartek Drozdz, который может повернуть дисплей в соответствии с динамической центральной точкой. Я чувствую себя очень легко. Скачать Адрес: [URL] ht.

Микросервисная архитектура Spring Cloud-Message Bus

Микросервисная архитектура Spring Cloud-Message Bus 1. Что такое шина сообщений Из-за изменений в информации о конфигурации или других операциях управления требуется шина сообщений. Шина сообщений озн.

Закрытие в JavaScript

Закрытие в Дж Общее понимание закрытия: область внешней функции доступна из одной функции. Мы можем сделать простое понимание закрытия в функцию «определенного в функции», конечно, также м.

Quic Faction Combat (3) Заявка на сертификат LetSERRYPT и автоматическое обновление

После развертывания кластера QUIC исходный сертификат HTTPS истек, и я попытался переустановить/обновить сертификат. Let’s Encrypt Это бесплатный товар для автоматического выпуска сертификата HT.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *