gpt4 book ai didi

php - encodeURIComponent 真的有用吗?

转载 作者:可可西里 更新时间:2023-11-01 00:01:38 25 4
gpt4 key购买 nike

在向服务器执行 http-get 请求时,我仍然不明白的是使用 JS 函数 encodeURIcomponent 对 http-get 的每个组件进行编码的优势是什么

在做一些测试时,我发现如果我不使用 encodeURIcomponent,服务器(使用 PHP)也能正确获取 http-get 请求的值!显然,我仍然需要在客户端级别对特殊字符 & 进行编码? =/: 否则像“peace&love=virtue”这样的 http-get 值将被视为 http-get 请求的新键值对,而不是单个值。但为什么 encodeURIcompenent 也编码许多其他字符,例如 'è',它被翻译成 %C3%A8,必须使用 utf8_decode 函数在 PHP 服务器上解码。

通过使用 encodeURIcomponent,http-get 请求的所有值都是 utf8 编码的,因此当在 PHP 中获取它们时,每次我都必须在每个 $_GET 值上调用 utf8_decode 函数,这非常烦人

为什么我们不能只对 & 进行编码? =/: 字符?

另请参阅:JS encodeURIComponent result different from the one created by FORM它表明 encodeURIComponent 甚至没有正确编码,因为一个简单的浏览器 FORM GET 以不同的方式编码像“€”这样的字符。所以我仍然想知道这个 encodeURIComponent 是做什么用的?

最佳答案

那是因为

A Uniform Resource Identifier (URI) is defined in [RFC3986] as a sequence of characters chosen from a limited subset of the repertoire of US-ASCII [ASCII] characters.

所以官方不支持unicode; see the RFC了解详情。尽管所有现代浏览器都支持它,这就是为什么你能得到很好的结果。但是对于一些不支持它的浏览器或系统的奇怪情况,你对其进行编码并确保它在所有兼容标准的浏览器上都能正常工作。

关于php - encodeURIComponent 真的有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238515/

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