提问人:saleh 提问时间:2/7/2023 最后编辑:saleh 更新时间:2/7/2023 访问量:153
阻止 JavaScript 对 URL 进行编码
prevent javascript to encode url
问:
我正在尝试在 java 脚本中更改 url,我的 url 没有任何空格或 url 的坏字符,但 java 脚本对其进行编码并在其中添加一些字符。
我的代码是:pushstate
name= name.trim();
const nextState = { additionalInformation: name };
window.history.pushState(nextState, "", my_domain()+"/brands/" + name);
我的网址是:
http://localhost/brands/Brilliance
但它显示为:
http://localhost/brands/Brilliance%E2%80%8C
答:
0赞
TopchetoEU
2/7/2023
#1
提供的代码没有理由不起作用,但我怀疑实际上格式不正确。如果我在 URL 中获取后缀并运行它,我会得到一个空字符串。但是,如果我手动将其转换为字符串,我会得到以下内容: .这很可能意味着数据已损坏。name
%E2%80%8C
decodeURI
\xe2\x80\x8c
â\x80\x8C
0赞
Codes_matter
2/7/2023
#2
使用 encodeURIComponent 更改 URL
const nextState = encodeURIComponent('http://localhost/brands/Brilliance');
history.pushState({}, '', nextState);
这将更改您的 URL,并且 URL 将没有任何空格和错误字符
1赞
Danny_Heeley
2/7/2023
#3
URL 末尾的“%E2%80%8C”是一个不可见的 Unicode/ASCII 字符,当您粘贴到 URL 中时,您可能会复制该字符,或者可能是某个包导致的。无论哪种情况,都可以通过以下两种方法解决此问题:
您可以将链接粘贴到十六进制编辑器中,并手动删除不可见字符,然后再复制粘贴回代码编辑器。
您可以使用此 javascript 解决方案来删除字符:
function remove_non_ascii(str) {
if ((str===null) || (str===''))
return false;
else
str = str.toString();
return str.replace(/[^\x20-\x7E]/g, '');
}
console.log(remove_non_ascii('äÄçÇéÉêHello-WorldöÖÐþúÚ'));
评论
0赞
saleh
2/8/2023
它对英语字符和 TNX 非常有效。但是当我调用波斯字符的方法时,它返回空 string.is 有什么方法可以保护波斯字符免受编码??
上一个:pushState 之后的空白页
评论
name