Описание тега encodeuricomponent

NoneEncode URIComponent - это основная функция JavaScript, которая экранирует специальные символы в строках, чтобы их можно было безопасно использовать в URI в качестве компонентов строк запроса или хэшей.

encodeURIComponent- это основная функция JavaScript, которая в основном используется для экранирования специальных символов в строках, которые будут частью строки запроса URI. Например:

var string = "An `odd' string",
    enc_string = encodeURIComponent(string); // === "An%20%60odd'%20string"

Возвращенную строку можно безопасно использовать в URI:

// makes an AJAX call to request.php?string=An%20%60odd'%20string
var xhr = new XMLHttpRequest();
xhr.open("GET", "request.php?string=" + enc_string, true);
xhr.onreadystatechange = callback;
xhr.send();

encodeURIComponent также может использоваться для экранирования ключей строк запроса.

Отличия от escape а также encodeURI

encodeURIComponent экранирует специальные символы в формат %##, где ## - шестнадцатеричное значение кода специального символа, как и escape а также encodeURI.

Но escapeникак не избежать символы, такие как@, *, / а также +, плюс обычно интерпретируется веб-серверами как пробел, поэтому его не следует использовать, когда это возможно. Кроме того,escape кодирует символы Unicode как %u####, пока encodeURIComponentсначала преобразует их в последовательность символов UTF8, а затем кодирует отдельные байты. Например:

var unichar = "\u25bc";               // A triangle pointing down
alert(escape(unichar));               // Alerts "%u25BC"
alert(encodeURIComponent(unichar));   // Alerts "%E2%96%BC"

encodeURI ведет себя аналогично encodeURIComponent, но не кодирует какой-либо другой символ, например /, & а также =, так как его следует использовать для экранирования целых URI, а не только частей строки запроса.

Использование для преобразования строки в кодировку UTF-8

Есть хороший трюк для преобразования строки с символами Unicode в соответствующую кодировку UTF-8:

function toUTF8(string) {
    return unescape(encodeURIComponent(string));
}

Есть способ преобразовать его обратно из UTF-8:

function fromUTF8(string) {
    return decodeURIComponent(escape(string));
}