学习 URL 传参中哪些字符是支持的,哪些是不支持的

embedded/2025/2/12 5:14:50/

 URL 的结构

URL 由多个部分组成,包括协议、域名、路径、查询参数和片段标识符,其中,查询参数部分就是问号后面的内容,这部分使用键值对,中间用 & 分隔。比如,http://example.com/path?key1=value1&key2=value2。

前言

根据 RFC 3986 标准,URL 中的字符分为保留字符和非保留字符。保留字符在 URL 中有特殊意义,比如: / ? # [ ] @等,这些字符如果在查询参数中出现,可能需要编码。而非保留字符包括字母、数字、- _ . ~,这些可以直接使用。

不过,查询参数的情况可能有点不同。比如,在查询参数中,有些保留字符可能被允许,但需要看具体上下文。例如,? 和 & 用于分隔参数,所以如果在参数值中包含这些字符,必须进行编码。比如,& 应该被编码为 %26,而 = 应该编码为 %3D,否则会被解析为键值对的分隔符。

还有,空格在 URL 中通常被编码为 + 或者 %20。而其他特殊字符,比如!、$、'、(、)、*、,、; 等,可能需要视情况而定。比如,+ 在查询参数中会被视为空格,所以如果有真正的加号,可能需要编码为 %2B。

另外,非 ASCII 字符,比如中文,通常会被转换成 UTF-8 编码,然后每个字节用 % 后面跟两位十六进制数表示。比如,“你好” 会被编码为 % E4% BD% A0% E5% A5% BD。

总结

支持的字符(无需编码)

  1. 字母:A-Za-z
  2. 数字:0-9
  3. 特殊符号:-_.~

需编码的字符

保留字符:在 URL 中有特殊含义,若作为参数内容需编码:

: / ? # [ ] @ ! $ & ' ( ) * + , ; = % 

常见编码示例:

  1. 空格 → %20 或 +(但+本身需编码为%2B
  2. & → %26(分隔符冲突)
  3. = → %3D(键值对分隔符冲突)
  4. ? → %3F(查询起始符冲突)
  5. # → %23(片段标识符冲突)

其他字符

  1. 非 ASCII 字符(如中文)→ UTF-8 编码后百分比转义,例:你好 → %E4%BD%A0%E5%A5%BD
  2. 控制字符、Unicode 字符等均需编码。

编码规则

  1. 保留字符:若在参数值中出现且不表示其原生语义,必须编码。
  2. 非保留字符:无需编码。
  3. 空格处理:编码为%20+(后者仅在查询部分允许,解码时转为空格)。
  4. 特殊场景
    • +在值中需编码为%2B,避免被解析为空格。
    • %需编码为%25(因其为编码标识符)。

http://www.ppmy.cn/embedded/161519.html

相关文章

Greenplum7 测试报告

Greenplum 测试报告 一、测试背景 在数字化浪潮汹涌澎湃的当下,随着互联网、物联网等技术的飞速发展,企业每天都会产生和收集到海量的数据。这些数据涵盖了用户行为、业务运营、市场动态等各个方面,宛如一座蕴藏着巨大价值的宝藏。然而&…

ArcGIS中的空值问题

空值是数据的一种特殊状态,当某个字段没有被赋值或者在数据获取、处理过程中数据缺失时就会出现空值。 01、空值的表现形式 【空值】不同于数字型的【零值】或者字符串型的【空格】。 数字型的【零值】是一个确定的数值,表示数量上为0。 字符串型的【…

MyBatis常见知识点

#{} 和 ${} 的区别是什么? 答: ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于原样文本替换,可以替换任意内容,比如${driver}会被原样替换为com.mysql.jdbc. Driver。 一个…

DevOps :无价值指标与可操作指标

观看完本文后,你将能够识别无价值指标的局限性,描述可操作指标的价值,并列举可操作指标的示例。 警惕无价值指标。无价值指标能让人感觉良好,但不利于采取行动。例如,想想网站的 “点击量” 这一指标。你可能会宣称&am…

方舟字节码原理剖析:架构、特性与实践应用

方舟字节码原理剖析:架构、特性与实践应用 一、引言 在当今软件行业高速发展的大背景下,应用程序的性能、开发效率以及跨平台兼容性成为了开发者们关注的核心要素。编译器作为软件开发流程中的关键工具,其性能和特性直接影响着软件的质量和…

基于改进型灰狼优化算法(GWO)的无人机路径规划

内容: 基于改进型灰狼优化算法的无人机轨迹规划 GWO是一种群体智能优化算法,模仿灰狼的社会等级和狩猎行为。原始的GWO有一些局限性,比如容易陷入局部最优,收敛速度慢等,所以改进型的GWO可能通过不同的策略来优化这些…

HarmonyOS Next 方舟字节码文件格式介绍

在开发中,可读的编程语言要编译成二进制的字节码格式才能被机器识别。在HarmonyOS Next开发中,arkts会编译成方舟字节码。方舟字节码长什么样呢?我们以一个demo编译出的abc文件: 二进制就是长这样,怎么去理解呢&…

机器学习数学基础:20.方程组解的结构

一、教程简介 本教程专门为线性代数零基础的小白打造,旨在全面且细致地讲解解方程组与基础解系的相关知识,助力大家逐步扎实地掌握这一重要内容板块。 二、知识目标 透彻理解非齐次与齐次线性方程组的定义、本质区别以及对应的解法。熟练掌握判断方程…