Javascript 使用';时,编码字符串与asp.net server.URL编码不同';串连
当我在aps.net中使用对字符串进行编码时,我使用的函数是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”这封信很重要。
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中进行比较#