【问题标题】:URL Encoding with capital letters [duplicate]使用大写字母进行 URL 编码 [重复]
【发布时间】:2012-03-29 11:49:55
【问题描述】:

可能重复:
.net UrlEncode - lowercase problem

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

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

在我来加密这个字符串之前,这不是什么大问题。我想要的最终结果是这样的。

zRvo7cHxTHCyqc66cRT7AD%2BOJII%3D

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

zRvo7cHxTHCyqc66cRT7AD+OJII=

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

b6qk+x9zpFaUD6GZFe7o1PnqXlM=

这显然不是我想要的字符串。有没有一种简单的方法可以在不重新发明 UrlEncoding 的情况下使编码字符大写?

感谢

【问题讨论】:

  • 看看这个,应该可以解决你的问题:stackoverflow.com/questions/918019/…
  • 是的,就是这样,解决了我的问题!我可以将其标记为重复吗?
  • @James Hay:是的,您可以投票关闭您自己的问题作为重复问题,和/或标记它们以便快速关闭。我现在已经为你完成了。

标签: c# asp.net twitter oauth urlencode


【解决方案1】:

当然,在对字符串进行编码之前对其进行 CAP。编码通常是基于文字字符值的单向街道,因此结果不同也就不足为奇了。不过,我确实想知道,您将其用于什么类型的价值?肯定有更好的方法来处理您正在编码的数据的类型

对链接副本的补充:

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);
}

将其转换为扩展方法允许对任何字符串变量进行大写 URL 编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2013-02-01
    • 2019-01-17
    • 2016-05-03
    • 1970-01-01
    • 2018-08-02
    相关资源
    最近更新 更多