Asp.net 向 url 添加奇怪的编码字符

问题描述

我有链接,网址为 /laws/document?ref=S-AL1_2_36458

点击它时,会添加奇怪的字符。字符是:

%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B

所以网址将是:

/laws/document?ref=S-AL1_2_36458%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B

js 中编码原始链接(使用 encodeURI())时,它返回相同的奇怪链接。但是,当仅编码“参考值”时 这是 S-AL1_2_3645 它不会添加奇怪的字符

解决方法

%E2%80%8B 是 Unicode 字符 ZERO WIDTH SPACE (U+200B) 的 URL 编码序列。这在您的网址中重复出现 5 次。

看起来,链接实际上不只是 /laws/document?ref=S-AL1_2_36458,而是 /laws/document?ref=S-AL1_2_36458<ZWSP><ZWSP><ZWSP><ZWSP><ZWSP>,然后浏览器将正确编码以发出请求。如果这是导航到的实际 URL,则此行为是正常且正确的。

如果这不是您想要的 URL,我建议您检查链接的 HTML。如果这是一个静态 HTML,则检查 URL 末尾是否有任何字符并将其删除。由于它们是零宽度的空间,它们实际上是不可见的,但仍然存在(例如,在文本编辑器中,您会在移动光标时注意到它们)。如果这是生成的链接,请检查该值的来源并尝试修剪源周围的任何空白。