从Server.UrlEncode获取字符串为大写
本文关键字:字符串 获取 Server UrlEncode | 更新日期: 2023-09-27 17:59:13
我希望它的输出为大写。这是我在Server.UrlEncode("http://")
:上得到的
http%3a%2f%2f
但我需要:
http%3A%2F%2F
C#中有内置的解决方案吗?
编码的url应作为签名基础字符串(签名算法的输入),以创建摘要(哈希)。然后,散列将由其他系统(java、php等)验证,因此他们需要首先通过签名重建来重新创建散列。
这将将字符串中的所有转义字符大写。
string url = "http://whatever.com/something";
string lower = Server.UrlEncode(url);
Regex reg = new Regex(@"%[a-f0-9]{2}");
string upper = reg.Replace(lower, m => m.Value.ToUpperInvariant());
Uri.EscapeDataString("http://")
此代码返回
http%3A%2F%2F
这是非常容易的
Regex.Replace( encodedString, @"%[a-f'd]{2}", m => m.Value.ToUpper() )
即,将所有十六进制字母数字组合替换为大写
我遇到了同样的问题,我在这个链接中找到了答案:
WebUtility.UrlEncode或HttpUtility.UrlEncode
简而言之,你可以使用:
System.Net.WebUtility.UrlEncode
其编码为大写十六进制值
假设"http"始终是前四个字符,那么您只需将字符串拆分在"http"后面的UrlEncode
部分,然后调用它的ToUpper()
。然后用"http"作为前缀重新连接在一起。