Автор оригинала: Scott Robinson.
Для большого количества жизни JavaScript это был язык программирования только в браузере и не может работать на стороне сервера, как она может сейчас. Из-за этого JS имеет много встроенных функций, которые специфичны для браузерных функций, таких как строки кодирования для использования в URL. Некоторые из наиболее часто используемых функций:
encodeuri.
encodeuricomponent.
декодеур
декодеурикомапент
побег
unescape
Функция, которая является фокусом этой статьи, encodeuri
используется для кодирования Однородный идентификатор ресурса (URI), так что персонажи, не предназначенные для использования в URI (как пространство), отформатированы правильно. Эти символы избежают использования процентное кодирование или кодирование URL-адреса, чтобы представлять нестандартные символы URI.
Процентное кодирование – это просто шестнадцатеричное представление символа ASCII, префиксированного процентами (%) характером. Так, например, процентное, кодирующее представление восклицательного знака (!) – % 21
С 21 – номер шестигранника ASCII для восклицательного знака.
С точки зрения использования случаев, скажем, ваш веб-сайт имеет строку поиска, а введенные запросы, используются для построения такого URL:
https://mysite.com/q=[SEARCH_QUERY]
В таком случае, как это, вполне вероятно, что пользователь вступит в строку, содержащую пространство (или другой зарезервированный символ), который не допускается в URL. Так что мы делаем, если пользователь вводит строку «веб-разработка», например? Мы не можем позволить любому персонажу в нашем URL. Вот где encodeuri
приходит в:
> let query = 'web development'; > let searchUrl = 'https://mysite.com/q=' + query; > encodeURI(searchUrl) 'https://mysite.com/q=web%20development'
Обратите внимание, как пространство было заменено на кодировку процентов, % 20
Отказ encodeuri
Функция идеально подходит для этого, потому что она не избежит никаких других зарезервированных символов, как толстая кишка или пересылка. Это потому, что он ожидает получить полный URL в качестве ввода, в отличие от encodeuricomponent
Вариация этой функции. URL прошел в encodeuri
Может содержать любую допустимую часть схемы URL и не избежать, а другие зарезервированные или запрещенные символы кодируются:
> encodeURI('https://scott:[email protected]:443/my/file.html?stack=abuse#javascript') 'https://scott:[email protected]:443/my/file.html?stack=abuse#javascript' > encodeURI('https://scott:[email protected]:443/my/file.html?stack="abuse"#javascript') 'https://scott:[email protected]:443/my/file.html?stack=%22abuse%22#javascript'
Обратите внимание, как не было никаких изменений, внесенных в URL в первый звонок выше. Это связано с тем, что все символы действительны в URL. Во втором вызове у нас есть несколько кавычек, которые недействительны и поэтому закодированы.
Следующие символы – не закодирован encodeuri
независимо от того, где они расположены в URL: A-ZA-Z0-9;,/?: @ & = + $ -_.! ~ * '() #
Эта функция может даже обрабатывать закодирование символов не-ASCII, используя более длинную кодировку на основе UTF-8. Например, символ валюты евро (€) кодируется с использованием трех процентов-кодирования:
> encodeURI('€') '%E2%82%AC'
Это позволяет для персонажей с любыми языками или специальными символами форматирования для передачи через URL-адреса.
Заключение
Встроенный JavaScript encodeuri
Функция полезна для правильного форматирования URL-адресов или более полно, URI с безоговорочными символами ASCII или даже символы UTF-8. Следует использоваться в любое время пользовательского ввода в конструкции URL-адреса для обеспечения правильной отформатирования.
На другой стороне вещей у нас также есть декодери
Встроенная функция, которая обрабатывает декодирование ценностей в процентах, которые мы посмотрим в другую статью.!