我正在使用HttpUtility.UrlEncode方法为我编码一个字符串。问题是编码位置中的字母是小写的,例如:
冒号(:)变为%3a而不是%3A。
在我加密此字符串之前,问题不是很多。我想要的最终结果看起来像这样。
zRvo7cHxTHCyqc66cRT7AD%2BOJII%3D
如果我使用大写字母,我会得到这个
zRvo7cHxTHCyqc66cRT7AD+OJII=
这是正确的,但如果我使用小写字母(即使用UrlEncode而不是静态字符串)我得到这个
b6qk+x9zpFaUD6GZFe7o1PnqXlM=
这显然不是我想要的字符串。有没有一种简单的方法可以使编码字符变成大写而不重新发明UrlEncoding的轮子?
Thnaks
答案 0 :(得分:3)
当然,在编码之前填充字符串。编码通常是基于文字字符值的单行道,因此难怪它的结果不同。我不知道,你使用它的价值是什么类型的?肯定有一种更好的方法来处理您正在编码的数据的类型。
链接副本的补充:
public static string UpperCaseUrlEncode(this string s)
{
char[] temp = HttpUtility.UrlEncode(s).ToCharArray();
for (int i = 0; i < temp.Length - 2; i++)
{
if (temp[i] == '%')
{
temp[i + 1] = char.ToUpper(temp[i + 1]);
temp[i + 2] = char.ToUpper(temp[i + 2]);
}
}
return new string(temp);
}
将其转换为扩展方法允许任何字符串变量为UPPER CASE URL Encoded。