我希望它的输出为大写。这就是我Server.UrlEncode("http://")
上的内容:
http%3a%2f%2f
但我需要:
http%3A%2F%2F
C#中是否有内置解决方案?
编码的url应作为签名基本字符串(输入到签名算法)来创建摘要(哈希)。 然后哈希将由其他系统(java,php等)验证,因此他们需要首先通过签名重建来重新创建哈希。
答案 0 :(得分:26)
这将大写字符串中的所有转义字符。
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());
答案 1 :(得分:9)
Uri.EscapeDataString("http://")
此代码返回
http%3A%2F%2F
答案 2 :(得分:3)
这很容易
Regex.Replace( encodedString, @"%[a-f\d]{2}", m => m.Value.ToUpper() )
即。将所有十六进制字母数字组合替换为大写
答案 3 :(得分:0)
假设“http”始终是前四个字符,那么您只需在“http”之后拆分字符串,UrlEncode
该部分,然后在其上调用ToUpper()
。然后加入“http”作为您的前缀。
答案 4 :(得分:0)
我遇到了同样的问题,我在此链接中找到了答案:
WebUtility.UrlEncode or HttpUtility.UrlEncode
简而言之,您可以使用:
System.Net.WebUtility.UrlEncode
编码为大写十六进制值