【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 参数。

完结撒花~

相关推荐
c238561 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
moonsims2 小时前
星闪在跨域无人化系统作用
开发语言·php
Iruoyaoxh2 小时前
栈和队列~
java·开发语言
Hrain-AI3 小时前
2026 企业 AI 编程智能体实战:Codex 与 Claude Code
开发语言·人工智能·kotlin
wdfk_prog3 小时前
嵌入式面试真题第 13 题:单硬件 Timer 下的高精度多路软件定时器架构设计
c语言·开发语言·面试·职场和发展·嵌入式
oort1233 小时前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程
slandarer3 小时前
MATLAB | 泰勒图绘制,支持各种角度范围
开发语言·数学建模·matlab·nature·顶刊·泰勒图
Xin_ye100864 小时前
第三章:内存泄漏的常见“案发现场”
c#·wpf
mct1234 小时前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++
zx1154505 小时前
Java 基础复习大纲(详解版)
java·开发语言