Описание тега encodeuricomponent
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));
}