首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

如何实现百度的那种url编码呀

2012-09-01 
怎么实现百度的那种url编码呀?如果我在百度里面搜 ray() , 它会编码成 ray%28%29,我这里用C# 的 HttpUtili

怎么实现百度的那种url编码呀?
如果我在百度里面搜 ray() , 它会编码成 ray%28%29,

我这里用C# 的 HttpUtility.UrlEncode(); 结果还是得到 ray(),

请问怎么才能编码成向百度这样。

[解决办法]
System.Web.HttpUtility.UrlEncode("要编码的字符串", System.Text.UnicodeEncoding.GetEncoding("GB2312")).ToUpper()
[解决办法]
( %28
) %29

是Url编码,你怎么得到的结果,使用Request是经过解码了的。
[解决办法]
参考
[解决办法]

Asp.Net是利用Server下的UrlEncode方法与UrlDncode方法来对Url进行编解码的。

C# code
Server.UrlEncode(string s)--对s进行Url编码:Server.UrlDncode(string s)--对s进行Url解码:
[解决办法]
参考
[解决办法]
我觉得百度的这种编码方式是自己写的,LZ完全可以自己实现
我这里有个是最所以字符都进行编码的,LZ参考下
C# code
//编码    public static string Encode(this string str)    {        string codeword = "";        byte[] by = Encoding.Default.GetBytes(str);        foreach (byte b in by)        {            codeword = codeword + "%" + b.ToString("X");        }        return codeword;    }//解码    public static string Decode(this string str)    {        string[] strlist = str.Split(new string[] { "%" }, StringSplitOptions.RemoveEmptyEntries);        byte[] by = new byte[strlist.Length];        for (int i = 0; i < strlist.Length; i++)        {            string temp = strlist[i];            int inttemp = ToInt(AnyToTen(temp, 16));            if (inttemp > 0)                by[i] = byte.Parse(inttemp.ToString());            else                return "";        }        return Encoding.Default.GetString(by);    }
[解决办法]
额..不好意思,ToInt是转换成整数的方法,AnyToTen(temp, 16)是16进制转换成10进制的,LZ可以用其他方法代替

[解决办法]
C# code
private static long Test(string hexStr)        {            char[] charList = hexStr.ToCharArray();            long result = 0;            for (int i = 0; i < charList.Length; i++)            {                result += HexChar2Dec(charList[charList.Length - 1 - i]) * Power(16, i);            }            return result;        }
[解决办法]
public static string Escape(string str)
{
StringBuilder sb = new StringBuilder();
foreach (char c in str)
{
sb.Append((Char.IsLetterOrDigit(c) || c == '-' || c == '_' || c == ' ' || c == '/' || c == '.') ? c.ToString() : Uri.HexEscape(c));
}
return sb.ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Escape("ray()"));
}

或者直接引用Microsoft.JScript.dll

Microsoft.JScript.GlobalObject.escape("ray()")
[解决办法]
学习啦,谢谢大家

热点排行