asp.net URL传值的时候,值带百分号怎么得到这个百分号

如在跳转 href="页面?name=%75"
的时候
值如果头带有百分号就被系统自动转义了。
如何取到原始的%75这个值?
楼下那个方法还是不行,如果我传的值是 %78之类的两位数字的话,就被自动转义成字母了。。。

%75只是个例子,意思是传值会传很多种类型的字符

如果你的值带有特殊字符,建议你将值进行编码后再传,建议使用base64编码,接收到值后再解码就可以了,一般做网站的公共类中必然有base64的编解码类,你可以自己百度搜索一下。

/// <summary>
/// 将普通文本转换成Base64编码的文本
/// </summary>
/// <param name="value">普通文本</param>
/// <returns></returns>
public string Base64Encode(String value)
{
byte[] binBuffer =(new UnicodeEncoding()).GetBytes(value);
int base64ArraySize = (int)Math.Ceiling(binBuffer.Length / 3d) * 4;
char[] charBuffer = new char[base64ArraySize];
Convert.ToBase64CharArray(binBuffer, 0, binBuffer.Length, charBuffer, 0);
string s = new string(charBuffer);
return s;
}

/// <summary>
/// 将Base64编码的文本转换成普通文本
/// </summary>
/// <param name="base64">Base64编码的文本</param>
/// <returns></returns>
public string Base64Decode(string base64)
{
char[] charBuffer = base64.ToCharArray();
byte[] bytes = Convert.FromBase64CharArray(charBuffer, 0, charBuffer.Length);
return (new UnicodeEncoding()).GetString(bytes);
}

/// <summary>
/// 将Byte[]转换成Base64编码文本
/// </summary>
/// <param name="binBuffer">Byte[]</param>
/// <returns></returns>
public string toBase64(byte[] binBuffer)
{
int base64ArraySize = (int)Math.Ceiling(binBuffer.Length / 3d) * 4;
char[] charBuffer = new char[base64ArraySize];
Convert.ToBase64CharArray(binBuffer, 0, binBuffer.Length, charBuffer, 0);
string s = new string(charBuffer);
return s;
}

/// <summary>
/// 将Base64编码文本转换成Byte[]
/// </summary>
/// <param name="base64">Base64编码文本</param>
/// <returns></returns>
public Byte[] Base64ToBytes(string base64)
{
char[] charBuffer = base64.ToCharArray();
byte[] bytes = Convert.FromBase64CharArray(charBuffer, 0, charBuffer.Length);
return bytes;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-24
Server.UrlEncode(“参数”)
也可以使用javascript 的编码方式
href="页面?name=encodeURI("参数")
传送页代码编码

接收页代码 解码

Server.HtmlDecode(Request.QueryString["name"].Trim())本回答被提问者采纳
第2个回答  2010-06-24
我想你传的时候加上\是不是能把%留下来,试试吧。
实在不行你就传个percent75,完了接受参数时重新组合下字符串就行了。if(a.contain("percent")){
a = a.substring(7,2);
a = "%" + a;
}
有点2,但绝对行。
第3个回答  2010-06-24
如果一定有%号的话,也就不必在传这个百分号了。直接传数字。然后获取的时候,加上%号不就可以了。

不知道有没有理解到你的意思。
第4个回答  2010-06-24
使用前先转换下

Server.UrlEncode,或者接收到时转换Server.UrlDecode