【C#】HTTP中URL编码方式解析

前言:当调用HTTP请求时,通常有get和post两种方式

类型 位置 内容格式 常见用途 示例
Query 参数 URL 里(? 后) key=value&key=value 标识性参数(如分页、过滤条件) GET /api/user?id=1
Form-data 请求体中 多段分隔(MIME multipart) 上传文件、图片、混合数据 Content-Type: multipart/form-data
Urlencoded 请求体中 key=value&key=value 表单提交(纯文本字段) Content-Type: application/x-www-form-urlencoded
Raw JSON 请求体中 JSON 字符串 现代 API 请求(REST) Content-Type: application/json

在传参的时候,有些参数可能带一些特殊字符,比如&,"等等,因此需要编码。

编码方式如下:

方法名 所属命名空间 编码标准 常见用途 是否限制长度 特点
Uri.EscapeDataString() System RFC 3986 用于单个参数值 ✅ 有(约 32,766) 严格编码规则,推荐用于 query
Uri.EscapeUriString() System RFC 3986 用于整条 URL ✅ 有 不会转义 /?#
HttpUtility.UrlEncode() System.Web HTML 表单标准 表单、查询字符串 ⚠️ 无显式限制 ASP.NET 中最常用
WebUtility.UrlEncode() System.Net HTML 表单标准 通用 URL 编码 ⚠️ 无显式限制 .NET 4.0+,轻量级
HttpUtility.HtmlEncode() System.Web HTML 实体 防止 XSS 攻击 ❌ 无限制 用于网页显示
Uri.UnescapeDataString() System RFC 3986 解码 ✅ 有 EscapeDataString 对应
HttpUtility.UrlDecode() System.Web HTML 表单标准 解码 ❌ 无限制 UrlEncode() 配对

其中HttpUtility.UrlEncode() 主要用于参数编码,需要有对应的解码;Uri.EscapeDataString()也是用于参数编码,但是可以不解码,因为大部分服务器端框架(包括 ASP.NET、Web API、MVC)在接收请求时,会自动为你解码 URL 参数。

完结撒花~

相关推荐
仙俊红几秒前
Java 单例模式:类里面为什么可以有自己类型的字段?
java·开发语言·单例模式
天下无敌笨笨熊2 分钟前
C# LINQ开发心得
c#·linq
_Evan_Yao5 分钟前
面向对象实战:用 Java/Python 设计一个简单的“怪物战斗”小游戏
java·开发语言
c++之路8 分钟前
CMake 系列教程(一):CMake 基础知识
c语言·开发语言·c++
AI行业学习8 分钟前
CC‑Switch v3.16.1-下载、配置、安装(2026‑06‑01 最新官方版)
开发语言·人工智能·windows·python
赵庆明老师10 分钟前
JS检查提交的文件是否合规
开发语言·前端·javascript
Irissgwe12 分钟前
C++ STL bitset 和位图详解
开发语言·c++·stl·位图·bitset
我还记得那天13 分钟前
C语言随机数生成机制与猜数字游戏实现
c语言·开发语言·游戏
serve the people41 分钟前
Elasticsearch(5) i want to monitor the es health from a http api
大数据·http·elasticsearch
伊灵eLing43 分钟前
GoLang 语言基础
开发语言·后端·golang