URL 编码将“&”(与号)视为“&”HTML 实体
2022-08-30 00:03:52
我正在对将在URL中传递的字符串进行编码(通过GET)。但是如果我使用 , 或 ,将被替换为 ,但我希望它被替换为 。我做错了什么?escape
encodeURI
encodeURIComponent
&
%26amp%3B
%26
我正在对将在URL中传递的字符串进行编码(通过GET)。但是如果我使用 , 或 ,将被替换为 ,但我希望它被替换为 。我做错了什么?escape
encodeURI
encodeURIComponent
&
%26amp%3B
%26
如果看不到你的代码,除了在黑暗中刺伤之外,很难回答。我猜你传递给 encodeURIComponent() 的字符串,这是要使用的正确方法,来自访问 innerHTML 属性的结果。解决方案是改为获取 innerText/textContent 属性值:
var str,
el = document.getElementById("myUrl");
if ("textContent" in el)
str = encodeURIComponent(el.textContent);
else
str = encodeURIComponent(el.innerText);
如果不是这种情况,则可以使用 replace() 方法来替换 HTML 实体:
encodeURIComponent(str.replace(/&/g, "&"));
如果你真的这样做了:
encodeURIComponent('&')
然后结果是 ,你可以在这里测试它。确保您编码的字符串只是而不是以...否则,它编码正确,这可能是这种情况。如果由于某种原因需要不同的结果,则可以在编码之前执行。%26
&
&
.replace(/&/g,'&')