URL 查询字符串中允许使用哪些字符?
查询字符串是否必须遵循特定格式?
根据https://www.rfc-editor.org/rfc/rfc3986
在第 2.2 节保留字符中,列出了以下字符:
保留= gen-delims / sub-delims
gen-delims = “:” / “/” / “?” /“#”/“[”/“]”/“@”</p>
子分隔符=“!” /“$”/“&” /“'”/“(”/“)”/“*”/“+”/“,”/“;” /“=”</p>
然后规范说:
如果 URI 组件的数据与保留字符作为分隔符的用途发生冲突,则必须在形成 URI 之前对冲突数据进行百分比编码。
接下来,在第 2.3 节未保留字符中,列出了以下内容:
未保留 = ALPHA / DIGIT / “-” / “.” /“_”/“~”</p>
维基百科有你的答案:http ://en.wikipedia.org/wiki/Query_string
" URL 编码:有些字符不能成为 URL 的一部分(例如空格),而另一些字符在 URL 中具有特殊含义:例如,字符 # 可用于进一步指定一个小节(或片段)文档;字符 = 用于将名称与值分开。可能需要转换查询字符串以满足这些约束。这可以使用称为 URL 编码的模式来完成。
特别是,对查询字符串进行编码使用以下规则:
与波浪号(“~”)字符对应的八位字节通常被旧的 URI 处理实现编码为“%7E”;"%7E" 可以替换为 "~" 而不会改变其解释。将 SPACE 编码为 '+' 和选择“原样”字符将这种编码与 RFC 1738 区分开来。”
关于格式,查询字符串是名称值对。这 ?将查询字符串与 URL 分开。每个名称值对由与号 (&) 分隔,而名称(键)和值由等号 (=) 分隔。例如。http://domain.com?key=value&secondkey=secondvalue
在我提供的维基百科参考中的结构下:
此链接包含您都需要的答案和格式化值。
https://perishablepress.com/url-character-codes/
为方便起见,这是列表:
< %3C
> %3E
# %23
% %25
{ %7B
} %7D
| %7C
\ %5C
^ %5E
~ %7E
[ %5B
] %5D
` %60
; %3B
/ %2F
? %3F
: %3A
@ %40
= %3D
& %26
$ %24
+ %2B
" %22
space %20