试试看:
encodeURIComponent("'@#$%^&");
如果你试试这个,你会看到除了单引号之外的所有特殊字符都被编码了。我可以使用什么函数对所有字符进行编码并使用 PHP 对其进行解码?
谢谢。
试试看:
encodeURIComponent("'@#$%^&");
如果你试试这个,你会看到除了单引号之外的所有特殊字符都被编码了。我可以使用什么函数对所有字符进行编码并使用 PHP 对其进行解码?
谢谢。
我不确定您为什么要对它们进行编码。如果只想转义单引号,可以使用.replace(/'/g, "%27")
. 但是,好的参考是:
您可以使用:
function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()*]/g, escape);
}
fixedEncodeURIComponent("'@#$%^&");
检查参考: http: //mdn.beonex.com/en/JavaScript/Reference/Global_Objects/encodeURIComponent.html
只是尝试encodeURI()
和encodeURIComponent()
你自己...
console.log(encodeURIComponent('@#$%^&*'));
输入:@#$%^&*
。输出:%40%23%24%25%5E%26*
。所以,等等,发生了什么事*
?为什么没有转换?TLDR:您实际上想要fixedEncodeURIComponent()
和fixedEncodeURI()
。很长的故事...
encodeURIComponent()
:不要使用。使用,如MDN文档fixedEncodeURIComponent()
所定义和解释的,强调我的...encodeURIComponent()
为了更严格地遵守RFC 3986(保留 !、'、(、) 和 *),即使这些字符没有正式的 URI 分隔用途,也可以安全地使用以下内容:
function fixedEncodeURIComponent(str) { return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { return '%' + c.charCodeAt(0).toString(16); }); }
当我们讨论这个话题时,也不要使用encodeURI()
. MDN 也有自己的重写,如MDNencodeURI()
文档所定义。引用他们的解释...
如果希望遵循更新的 RFC3986 的 URL,它保留了方括号(用于 IPv6),因此在形成可能是 URL 一部分的内容(例如主机)时不进行编码,以下代码片段可能会有所帮助:
function fixedEncodeURI(str) { return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']'); }
您可以使用btoa()
and atob()
,这将编码和解码给定的字符串,包括单引号。
我发现了一个从不错过任何字符的巧妙技巧。我告诉它替换一切,除了什么都没有。我这样做(URL编码):
function encode(w){return w.replace(/[^]/g,function(w){return '%'+w.charCodeAt(0).toString(16)})}
function encode(w){return w.replace(/[^]/g,function(w){return '%'+w.charCodeAt(0).toString(16)})}
loader.value = encode(document.body.innerHTML);
<textarea id=loader rows=11 cols=55>www.WHAK.com</textarea>
正如@Bergi 所写,您可以替换所有字符:
function encoePicture(pictureUrl)
{
var map=
{
'&': '%26',
'<': '%3c',
'>': '%3e',
'"': '%22',
"'": '%27'
};
var encodedPic = encodeURI(pictureUrl);
var result = encodedPic.replace(/[&<>"']/g, function(m) { return map[m];});
return result;
}
最近的答案 (2021)
使用 JavaScript 的URLSearchParams
:
console.log(new URLSearchParams({ encoded: "'@#$%^&" }).toString())