C# HttpUtility.UrlEncode使用大写十六进制字符
C# HttpUtility.UrlEncode使用大写十六进制字符,c#,urlencode,C#,Urlencode,HttpUtility.UrlEncode(“abc:123”)产生abc+%3a+123,但我需要它产生abc+%3a+123(注意大写的A) 有没有办法让UrlEncode输出大写十六进制字符 我不想简单地对整个字符串调用.ToUpper(),因为我需要abc保持小写。这不是现成的支持,但您可以自己做: private static string UrlEncodeUpperCase(string stringToEncode) { var reg = new Regex(@"%[a
HttpUtility.UrlEncode(“abc:123”)
产生abc+%3a+123
,但我需要它产生abc+%3a+123
(注意大写的A
)
有没有办法让UrlEncode输出大写十六进制字符
我不想简单地对整个字符串调用
.ToUpper()
,因为我需要abc
保持小写。这不是现成的支持,但您可以自己做:
private static string UrlEncodeUpperCase(string stringToEncode)
{
var reg = new Regex(@"%[a-f0-9]{2}");
stringToEncode = HttpUtility.UrlEncode(stringToEncode);
return reg.Replace(stringToEncode, m => m.Value.ToUpperInvariant());
}
请记住,
[RFC 3986][1]
明确提到大写和小写是等效的。这不支持开箱即用,但您可以自己做:
private static string UrlEncodeUpperCase(string stringToEncode)
{
var reg = new Regex(@"%[a-f0-9]{2}");
stringToEncode = HttpUtility.UrlEncode(stringToEncode);
return reg.Replace(stringToEncode, m => m.Value.ToUpperInvariant());
}
请记住,
[RFC 3986][1]
明确提到大写和小写是等效的。我相信我已经从这个问题的第二个答案中找到了答案:
解决方案是使用
Uri.EscapeDataString
,因为它使用%20
来表示空格,而不是+
,还使用大写的十六进制替换。我相信我已经从这个问题的第二个答案中找到了答案:
解决方案是使用
Uri.EscapeDataString
,因为它使用%20
来表示空格,而不是+
,还使用大写的十六进制替换,HttpUtility.UrlEncode
将冒号转换为%3a小写,如果您需要大写字母a,我相信您可能需要使用不同的实用程序进行编码,提供的帖子显示了不同C#类的编码输出。我相信从帖子中提供的表中,您可能需要使用WebUtility.UrlEncode(string)
这篇文章可能会有帮助(),HttpUtility.UrlEncode
将冒号转换为%3a小写,如果您需要大写字母a,我相信您可能需要使用不同的实用程序进行编码,提供的帖子显示了不同C#类的编码输出。我相信从帖子中提供的表中,您可能需要使用WebUtility.UrlEncode(string)
当涉及到身份验证签名时,它们并不等价,不幸的是,当涉及到身份验证签名时,它们并不等价