gpt4 book ai didi

javascript - JSencodeURIComponent结果与FORM创建的结果不同

转载 作者:行者123 更新时间:2023-11-28 14:04:23 26 4
gpt4 key购买 nike

我认为浏览器可以正确编码表单中输入的值。

但是这个简单的测试文件“test_get_vs_encodeuri.html”表明事实并非如此:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title></title>
</head><body>

<form id="test" action="test_get_vs_encodeuri.html" method="GET" onsubmit="alert(encodeURIComponent(this.one.value));">
<input name="one" type="text" value="Euro-€">
<input type="submit" value="SUBMIT">
</form>

</body></html>

点击提交按钮时:

encodeURICompenent 将输入值编码为“Euro-%E2%82%AC”

而浏览器进入 GET 查询时仅写入一个简单的“Euro-%80”

  1. 有人可以解释一下吗?

  2. 我如何使用 Javascript 以与浏览者的 FORM (windows-1252) 相同的方式对所有内容进行编码???(转义功能不起作用,encodeURIComponent 也不起作用)?

或者encodeURIComponent是否进行了不必要的转换?

最佳答案

这是一个字符编码问题。您的文档正在使用字符集 Windows-1252其中 位于位置 128,使用 Windows-1252 编码为 0x80。但是encodeURICompenent期望输入为 UTF-8,因此使用 Unicode 的字符集,其中 位于使用 UTF-8 0xE282AC 编码的位置 8364 ( PDF )。

解决方案是对您的文档也使用 UTF-8。或者您编写一个映射以将 UTF-8 编码字符串转换为 Windows-1252。

关于javascript - JSencodeURIComponent结果与FORM创建的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2607946/

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