从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等)验证,因此他们需要首先通过签名重建来重新创建散列。

从Server.UrlEncode获取字符串为大写

这将将字符串中的所有转义字符大写

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"作为前缀重新连接在一起。