gpt4 book ai didi

javascript - 当涉及重音等时,如何从 javascript 以 GET 请求形式重现 url 编码?

转载 作者:搜寻专家 更新时间:2023-11-01 04:19:28 25 4
gpt4 key购买 nike

假设我有一个像这样的简单表单:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="search">
<form method="GET" action="/super-action">
<input type="text" name="q" />
</form>
</div>
</body>
</html>

输入如下:@tags "Cinéma Whatever"

表单 GET 请求产生的 url 如下所示:/super-action?q=%40tags+"Cinéma+Whatever"

现在我想在 location.hash 中用 javascript 重现它,用井号而不是斜杠,比如:/super-action#q=%40tags+"Cinéma+Whatever"

但是有了可用的函数,我得到了结果:

  • 转义(输入):@tags%20%22Cin%E9ma%20Whatever%22
  • encodeURI(输入):@tags%20%22Cin%C3%A9ma%20Whatever%22
  • encodeURIComponent(输入):%40tags%20%22Cin%C3%A9ma%20Whatever%22
  • $(form).serialize(),没有 q=:%40tags+%22Cin%C3%A9ma+Whatever%22

问题:如何使输入值(如 @tags "Cinéma Whatever")看起来像表单 GET 请求的效果:%40tags+"Cinéma+Whatever" 使用 javascript?

最佳答案

根据 RFC 1738 , /super-action?q=%40tags+"Cinéma+Whatever" 在 URL 中无效:

Thus, only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL.

这意味着您不能生成一个包含该子字符串的有效 URL。您必须对特殊字符"é 进行编码,否则生成的字符串不是URL。

认为这是有效的原因可能是您的浏览器在欺骗您:它可能以部分编码的形式显示 URL,以便在地址栏中更容易阅读。尝试使用 Wireshark 等协议(protocol)分析器来检查通过网络发送的实际 URL 路径。

更新:我很快确认了这一点,响应表单提交而发送的 HTTP header 如下:

GET /?q=%40tags+%22Cin%C3%A9ma+Whatever%22 HTTP/1.1

所以它首先是 UTF-8 编码,然后是 URL 编码。

关于javascript - 当涉及重音等时,如何从 javascript 以 GET 请求形式重现 url 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10545350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com