问题描述
我有此链接,网址为 /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 末尾是否有任何字符并将其删除。由于它们是零宽度的空间,它们实际上是不可见的,但仍然存在(例如,在文本编辑器中,您会在移动光标时注意到它们)。如果这是生成的链接,请检查该值的来源并尝试修剪源周围的任何空白。