Javascript 使用';时,编码字符串与asp.net server.URL编码不同';串连

Javascript 使用';时,编码字符串与asp.net server.URL编码不同';串连,javascript,c#,asp.net,Javascript,C#,Asp.net,当我在aps.net中使用对字符串进行编码时,我使用的函数是Server.UrlEncode(GAE?,它返回字符串GAE%3f 当我使用javascript函数编码encodeURIComponent(GAE?时,它返回GAE%3F 但当我验证字符串时,它将永远不会匹配,因为我的验证失败。 需求是否有任何方法可以将encodeURIComponent(GAE?编码为GAE%3f,因为这是我的需求 另一方面,请让我知道Server.UrlEncodecode将其编码为大写字母“F”这封信很重要。

当我在aps.net中使用对字符串进行编码时,我使用的函数是
Server.UrlEncode(GAE?
,它返回字符串
GAE%3f

当我使用javascript函数编码
encodeURIComponent(GAE?
时,它返回
GAE%3F

但当我验证字符串时,它将永远不会匹配,因为我的验证失败。 需求是否有任何方法可以将
encodeURIComponent(GAE?
编码为
GAE%3f
,因为这是我的需求

另一方面,请让我知道
Server.UrlEncode
code将其编码为大写字母“F”这封信很重要。
注意:当我使用
encodeURIComponent(GAE?
)时,在小写情况下获得“F”的任何方法,问号(
)编码为
%3F
,但它应该是
%3F

,请尝试
Uri.EscapeDataString(“?”
我认为最好的方法是解码,然后进行比较

但是,如果出于任何原因必须在之前进行比较,则可以使用以下代码将编码的“特殊字符”更改为上/下:

string FixEncode(string val) {
    var result = new StringBuilder(val);
    int searchIndex = val.IndexOf('%');

    while (searchIndex >= 0)
    {
        result[searchIndex + 1] = char.ToUpper(result[searchIndex + 1]);
        result[searchIndex + 2] = char.ToUpper(result[searchIndex + 2]);
        searchIndex = val.IndexOf('%', searchIndex + 2);
    }

    return result.ToString();
}
您可以在两个字符串上运行此函数,然后比较:

if (FixEncode(str1) == FixEncode(str2)) { /*...*/ }

你能把它们解码回原样再比较一下吗?另外,您是在用Javascript还是在c#中比较结果?您关心编码字符串的其他部分的字母大小写吗?(是否应将
gae%3f
视为不同于
gae%3f
)?在javascript中进行比较而不是在C中进行比较#