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

HttpUtility.HtmlEncode与UrlEncode编码字符范围技术咨询

这个问题问得好!确实官方文档有时候不会把所有编码细节列得明明白白,我来给你拆解这两个方法到底会对哪些字符动手:

HttpUtility.HtmlEncode

这个方法的核心是转义HTML中有特殊语义的字符,避免XSS攻击或者页面渲染异常,主要编码的字符包括:

  • HTML核心特殊字符:这是最基础的,比如 < 转成 &lt;,> 转成 &gt;,& 转成 &amp;,双引号 " 转成 &quot;,单引号 ' 转成 &#39;(部分.NET版本也会用 &apos;,但主流是十进制实体)
  • 非ASCII字符:所有不在ASCII范围内的字符(比如中文、日文、版权符号©、商标符号™等),都会被转成对应的十进制或十六进制HTML实体(例如 中 会变成 &#20013;)
  • 控制字符:ASCII码0-31范围内的大部分控制字符(除了换行、回车、制表符这类允许在HTML中出现的)也会被编码
HttpUtility.UrlEncode

这个是为URL设计的编码方法,遵循RFC相关规范,主要处理URL中有特殊含义或不安全的字符:

  • URL保留字符:这些字符在URL里有特定用途(比如分隔协议、路径、参数),包括 :、/、?、#、[、]、@、!、$、&、'、(、)、*、+、;、=,都会被转成百分号编码(例如 ? 变成 %3F)
  • 空格:这个是高频场景,默认会被转成 +(严格模式下也可以转成 %20,但UrlEncode默认用+)
  • 非ASCII字符:中文、特殊符号这类非ASCII字符,会先被转换成UTF-8字节,再对每个字节做百分号编码(比如 中 会变成 %E4%B8%AD)
  • 不安全ASCII字符:ASCII码0-31、127这类控制字符,以及 "、<、>这类在URL中不安全的字符,也会被编码

如果想验证具体某个字符是否会被编码,其实可以写个简单的.NET小测试,遍历字符调用方法看结果,但上面这些就是日常开发中最常见的编码范围啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:41:11