根据RFC1738,可以在URL中使用未编码的星号(*)":
因此,只有字母数字,特殊字符"$ -_.+!*'(),"和用于其保留目的的保留字符可以在URL中未编码使用.
然而,w3.org的命名和寻址材料表明,星号"保留用于在特定方案中具有特殊的重要性",并暗示它应该被编码.
此外,根据RFC3986,URL是一个URI:
术语"统一资源定位符"(URL)指的是URI的子集,其除了标识资源之外,还通过描述其主要访问机制(例如,其网络"位置")来提供定位资源的手段.
它还指定星号是"sub-delim",它是"保留集"的一部分,并且:
URI生成应用程序应对与保留集中的字符对应的数据八位字节进行百分比编码,除非URI方案明确允许这些字符表示该组件中的数据.
它还明确指定它更新RFC1738.
我将所有这些都理解为要求将星号编码在URL中,除非它们用于URI方案定义的特殊用途.
是RFC1738的HTTP URI方案标准基准?它是否以某种方式免除星号编码,或者由于RFC3986而在这方面是否过时?
维基百科说,"当没有保留目的时,他不需要对字符进行百分比编码." RFC1738是否删除了星号的保留用途?
各种资源和工具似乎在这个问题上分开了.
PHP urlencode和rawurlencode- 后者声称遵循RFC3986 - 对星号进行编码.
然而,JavaScript的escape和encodeURIComponent 不编码的星号.
并且Java URLEncoder 不对星号进行编码:
特殊字符"."," - ","*"和"_"保持不变.
流行的在线 工具(谷歌搜索"在线网址编码器"的前两个结果)也不编码星号.该URL编码和解码工具明确指出,"[T]他保留的字符只有在特定情况下进行编码." 它继续列出星号和&符作为保留字符.它编码&符号,但不编码星号.
Stack Exchange社区中的其他类似问题似乎有陈旧,不完整或难以令人信服的答案:
我正在使用网址打开一个html页面,我正在使用页面网址以查询字符串发送数据.
例如: abc.html?firstParameter=firstvalue&seconedParameter=seconedvalue
问题是如果firstvalue或者secondvalue参数中包含特殊字符#,(,),%,{,那么我的网址构建不好.在这种情况下,url无法验证.我正在做这一切javascript.任何人都可以帮我解决这个问题.