从Server.UrlEncode获取大写字符串

时间:2011-06-16 11:29:50

标签: c# encoding urlencode

我希望它的输出为大写。这就是我Server.UrlEncode("http://")上的内容:

http%3a%2f%2f

但我需要:

http%3A%2F%2F

C#中是否有内置解决方案?


编码的url应作为签名基本字符串(输入到签名算法)来创建摘要(哈希)。 然后哈希将由其他系统(java,php等)验证,因此他们需要首先通过签名重建来重新创建哈希。

5 个答案:

答案 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

编码为大写十六进制值