You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET中如何实现m%2Fs与m/s的双向编解码转换

.NET中"m/s"与"m%2Fs"双向编解码实现方案

问题原因

m%2Fs是标准URL百分号编码格式,%2F对应正斜杠/的转义结果。你之前尝试的方法完全不匹配当前场景,自然无法生效:

  • HttpUtility.HtmlDecode/HttpUtility.HtmlEncode用于处理HTML实体转义(例如&nbsp;转空格、&lt;转<),不识别URL百分号转义规则
  • Convert.ToBase64String/Convert.FromBase64String用于Base64格式编解码,和百分号编码的逻辑完全无关,无法处理这类数据

转换实现

解码:将URL编码格式转回原始值(m%2Fs → m/s)

以下三种方法都可以正确得到结果,根据项目环境选择即可:

// 方法1:HttpUtility,需引用System.Web命名空间,全版本.NET支持
using System.Web;
string rawValue = HttpUtility.UrlDecode("m%2Fs"); // 输出:m/s

// 方法2:WebUtility,需引用System.Net命名空间,无需额外依赖System.Web,全版本支持
using System.Net;
string rawValue = WebUtility.UrlDecode("m%2Fs"); // 输出:m/s

// 方法3:Uri静态方法,需引用System命名空间,无额外依赖,全版本支持
using System;
string rawValue = Uri.UnescapeDataString("m%2Fs"); // 输出:m/s

编码:将原始值转为URL编码格式(m/s → m%2Fs)

注意:URL百分号编码本身不区分十六进制字符大小写,m%2fs和m%2Fs语义完全等价。如果需要严格匹配你获取到的m%2Fs(F为大写)格式,优先使用Uri.EscapeDataString方法。

// 方法1:HttpUtility,输出结果为m%2fs(f小写)
using System.Web;
string encodedValue = HttpUtility.UrlEncode("m/s");

// 方法2:WebUtility,输出结果为m%2fs(f小写)
using System.Net;
string encodedValue = WebUtility.UrlEncode("m/s");

// 方法3:Uri静态方法,输出结果为m%2Fs(F大写,和你拿到的格式完全匹配)
using System;
string encodedValue = Uri.EscapeDataString("m/s");

选型建议

  • 传统.NET Framework项目可任意选择上述方法
  • .NET Core/.NET 5+ 跨平台环境优先选择WebUtility或Uri的静态方法,不需要额外引入System.Web依赖,部署更轻量

内容的提问来源于stack exchange,提问作者tangel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 14:27:18