Get string from Server.UrlEncode as uppercase
I want its output as uppercase. This is what I get on Server.UrlEncode("http://")
:
http%3a%2f%2f
but I need:
http%3A%2F%2F
Is t开发者_C百科here built-in solution in C#?
The url encoded shall serve as signature base string (input to signature algorithm) to create digest (hash). The hash will then be verified by other system (java,php,etc), so they need to recreate the hash by signature reconstruction first.
This will uppercase all escaped characters in your string.
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://")
This code return
http%3A%2F%2F
This is very easy
Regex.Replace( encodedString, @"%[a-f\d]{2}", m => m.Value.ToUpper() )
I.e. replace all hex letter-digit combinations to upper case
I encountered the same problem, I found the answer in this link:
WebUtility.UrlEncode or HttpUtility.UrlEncode
in-short you can use:
System.Net.WebUtility.UrlEncode
which encodes into uppercase hex values
Assuming "http" is always the first four characters then you simply split the string after "http", UrlEncode
that part and then call ToUpper()
on it. Then join back together with "http" as your prefix.
精彩评论