为什么我必须对javascript a href链接进行双重编码?

为什么我必须对javascript a href链接进行双重编码?,javascript,html,Javascript,Html,(%c2%ae是url编码UTF-8中的®) 使用像fiddler这样的工具,你不能依赖浏览器的位置栏。Test1和Test3调用相同的URL,Test2调用不同的URL(不同浏览器之间也不同) 这种行为的原因是什么,为什么我必须对javascript href进行双重编码?值得注意的是,这是一种非常糟糕的做法,您应该使用 <html> <a href="http://localhost/test.html?x=%c2%ae">Test1</a> <

(%c2%ae是url编码UTF-8中的®)

使用像fiddler这样的工具,你不能依赖浏览器的位置栏。Test1和Test3调用相同的URL,Test2调用不同的URL(不同浏览器之间也不同)


这种行为的原因是什么,为什么我必须对javascript href进行双重编码?

值得注意的是,这是一种非常糟糕的做法,您应该使用

<html>
 <a href="http://localhost/test.html?x=%c2%ae">Test1</a>
 <a href="javascript:window.location='http://localhost/test.html?x=%c2%ae'">Test2</a>
 <a href="javascript:window.location='http://localhost/test.html?x=%25c2%25ae'">Test3</a>
</html>
正如您对Test1所做的那样



您需要双重转义的原因是,浏览器将为
href=“
属性取消转义一次输入,为
窗口取消转义一次。location=
更改。

为什么不将href设置为开头?
javascript:window.location=
呃,为什么???是的,当您可以直接使用URL时,为什么您必须对href进行双重编码?这显然不是真正的代码,而是再现这种行为的最小示例。真正的代码类似于javascript:someFunction('parameter')-someFunction在稍后使用参数执行window.open操作-其行为(使用特殊字符)与我预期的不一样。
href="http://localhost/test.html?x=%C2%AE"