使用大写字母进行URL编码

时间:2012-03-13 03:18:30

标签: c# asp.net twitter oauth urlencode

  

可能重复:
  .net UrlEncode - lowercase problem

我正在使用HttpUtility.UrlEncode方法为我编码一个字符串。问题是编码位置中的字母是小写的,例如:

冒号(:)变为%3a而不是%3A。

在我加密此字符串之前,问题不是很多。我想要的最终结果看起来像这样。

zRvo7cHxTHCyqc66cRT7AD%2BOJII%3D

如果我使用大写字母,我会得到这个

zRvo7cHxTHCyqc66cRT7AD+OJII=

这是正确的,但如果我使用小写字母(即使用UrlEncode而不是静态字符串)我得到这个

b6qk+x9zpFaUD6GZFe7o1PnqXlM=

这显然不是我想要的字符串。有没有一种简单的方法可以使编码字符变成大写而不重新发明UrlEncoding的轮子?

Thnaks

1 个答案:

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