C#HttpUtility.UrlEncode 大写问题

工作上和另一个公司对接,调对方的api需要用到md5加密,加密前要使用HttpUtility.UrlEncode,对方接口一直返回验证错误,定位了问题发现是中文编码使用HttpUtility.UrlEncode导致的。

C#中HttpUtility.UrlEncode返回的url编码是小写的,但对方是大写的,md5之后得到的hash码就不一致了,所以需要对HttpUtility.UrlEncode方法进行一层封装,代码如下:

        public static string UrlEncode(string str)
        {
            string urlStr = HttpUtility.UrlEncode(str);
            var urlCode = Regex.Matches(urlStr, "%[a-f0-9]{2}", RegexOptions.Compiled).Cast<Match>().Select(m => m.Value).Distinct();
            foreach (string item in urlCode)
            {
                urlStr = urlStr.Replace(item, item.ToUpper());
            }
            return urlStr;
        }

目前的想法是这样的,有空再来优化一下。

原文地址:https://www.cnblogs.com/TIEDPAG/p/9055394.html

时间: 2024-10-09 13:40:26

C#HttpUtility.UrlEncode 大写问题的相关文章

HttpUtility.UrlEncode编码重写

1. 某些系统方法,例如.NET系统方法HttpUtility.UrlEncode会将‘=’编码成‘%3d’,而不是%3D,导致加密签名通不过验证,请开发者注意检查. 2.Java 1.3和早期版本中,调用java.net.URLEncoder下的方法进行URL编码时,某些特殊字符并不会被编码,例如星号(*). 由于URL编码规则中规定了星号(*)必须编码,因此在请求字符串中含星号(*)的情况下如果使用了上述方法,会导致生成的签名不能通过验证. 例如调用v3/pay/buy_goods接口时,

HttpUtility.UrlEncode,Server.UrlEncode 的区别

引用: 1.HttpUtility.UrlEncode,HttpUtility.UrlDecode是静态方法,而Server.UrlEncode,Server.UrlDecode是实例方法. 2.Server是HttpServerUtility类的实例,是System.Web.UI.Page的属性. 3.用HttpUtility.UrlEncode编码后的字符串和用Server.UrlEncode进行编码后的字符串对象不一样 server.urlEncode 可以根据你页面定义好的编码方式进行编

Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办?

编码: Uri.EscapeDataString(name) 解码: Uri.UnescapeDataString(name)

HttpUtility.UrlEncode 方法 (String) 对 URL 字符串进行编码 NET Framework 4.6 and 4.5

对 URL 字符串进行编码. 这些方法重载可用于对整个 URL(包括查询字符串值)进行编码. 要编码或解码 Web 应用程序之外的值,请使用 WebUtility 类. 重载此成员.有关此成员的完整信息(包括语法.用法和示例),请单击重载列表中的相应名称.

Server.UrlEncode、HttpUtility.UrlDecode的区别

在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗?测试:string file="文件上(传)篇.doc";string Server_UrlEncode=Server.UrlEncode(file);string Server_UrlDecode=Server.UrlDecode(Server_UrlEncode);string HttpUtility_UrlEncode=System.Web.HttpUtility.UrlEncode(file);string HttpU

HttpUtitlity.UrlEncode

HttpUtility.UrlEncode 方法: 对 URL 字符串进行编码,以便实现从 Web 服务器到客户端的可靠的 HTTP 传输. 重载列表将字节数组转换为已编码的 URL 字符串,以便实现从 Web 服务器到客户端的可靠的 HTTP 传输.[C#] public static string UrlEncode(byte[]); 对 URL 字符串进行编码,以便实现从 Web 服务器到客户端的可靠的 HTTP 传输.[C#] public static string UrlEncode

UrlEncode 和 HtmlEncode

UrlEncode 是将指定的字符串按URL编码规则,包括转义字符进行编码. 1 void Main() 2 { 3 string rawUrl = "http://www.demo.com?key=测试"; 4 string urlEncode = System.Web.HttpUtility.UrlEncode(rawUrl); 5 urlEncode.Dump(); 6 } HtmlEncode 是将html源文件中不容许出现的字符进行编码,通常是编码以下字符:"<

C# URL编码转换 URL转码 UrlDecode UrlEncode

using System.Web; 引用system.web. textBox2.Text = System.Web.HttpUtility.UrlDecode(textBox1.Text, System.Text.Encoding.GetEncoding("GB2312"));//将Url中的编码转换为简体汉字 textBox2.Text = System.Web.HttpUtility.UrlEncode(textBox1.Text, System.Text.Encoding.Ge

Server.UrlPathEncode和Server.UrlEncode的区别

Server.UrlPathEncode默认使用的是utf-8编码而Server.UrlEncode默认为系统默认编码(一般是gb2312) Server.UrlDecode默认使用系统编码解码.所以这里容易发生路径解码成乱码的问题. Response.Write(Server.UrlDecode(Server.UrlPathEncode("中文")) & "<hr>") Response.Write(HttpUtility.UrlDecode(