экранирование специального символа в 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
![]()
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.
![]()
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.