比如我们打开 www.baidu.com , 随便输入一个关键字, 比如 "品牌(七彩虹)"  点搜索, 在浏览器的地址栏自动会编码成 "%C6%B7%C5%C6%28%C6%DF%B2%CA%BA%E7%29",想问问,这种编码应该怎么在winform程序中实现(注意:不是web程序中)
注1: System.Web.HttpUtility.UrlEncode 这个已经用过了,不行,这个不能将 "(" ")" 这样的括号或特殊符号编码
注2: 从网上也找了一些类,还是不行,不是转换不了,就是连 英文字母都给编码了

解决方案 »

  1.   

      public string GetUrlString(string p_Text)
            {
                byte[] _Value =Encoding.GetEncoding("GB2312").GetBytes(p_Text);            return "%"+BitConverter.ToString(_Value).Replace('-','%');
            }
      

  2.   

    参考这个<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!--#include file="collecter.asp"-->
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <link href="../Css/Global.css" rel="stylesheet" type="text/css" />
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <%ConStr = GetHttpPageUtf8("http://so.youku.com/search_video/q_%E5%AA%B3%E5%A6%87%E5%84%BF%E5%92%8C%E5%B0%91%E5%A5%B6%E5%A5%B6")
    'ConStr = UrlEncoding(ConStr)
    strValue = GetArray(ConStr,"<a href=""http://v.youku.com/v_show/id","</a>",true,true)
    strArry = Split(strValue,"$Array$")
    'response.Write(Lbound(strArry)&":"&Ubound(strArry))
    j = 1
    for i =0 to Ubound(strArry)
    ' response.Write(Len(strArry(i))&"<br>")
     if Len(strArry(i)) <100 then 
      tempID = GetArray(strArry(i),"id_","=.html",false,false)
      tempTitle = GetArray(strArry(i),"第","集",true,true)
      tempStr = "<div class='makedsj'><a href='javascript:void(0)' onclick='playTarget("""&tempID&""",""youku"")'>"&tempTitle&"</a></div>"
      response.Write(tempStr)
     ' j = j +1
     end if
    next
    %>
    </body>
    </html>
      

  3.   


     Console.WriteLine(BitConverter.ToString(System.Text.Encoding.GetEncoding("gb2312").GetBytes("品牌(七彩虹)")).Replace("-", "%"));
      

  4.   

     System.Web.HttpUtility.UrlEncode 这个可以吧
      

  5.   

    LZ根本没搞清为啥要UrlEncode? UrlEncode要对那些字符Encode?
    "(" ")" 本来就不需要UrlEncode,因为在Url串里面它们不是特殊字符 -.- ,这类基础问题都需要2天?
    如果为了严谨可以使用那么就对包括AscII的字符都要Encode,那么把英文字母Encode了也是很正常的。
      

  6.   

    那就试试这个吧:        static void Main(string[] args)
            {
                Console.WriteLine(Encode("safsdf123品牌(七彩虹)"));        }        public static string Encode(string p_Text)
            {
                return Regex.Replace(p_Text, "[^a-zA-Z0-9]", delegate(Match match) { return "%" + BitConverter.ToString(Encoding.GetEncoding("gb2312").GetBytes(match.Value)).Replace("-", "%"); });
            }/*
    输出:
    safsdf123%C6%B7%C5%C6%28%C6%DF%B2%CA%BA%E7%29*/
      

  7.   

    如果你想搞WEB
    你的先要搞清楚,哪些是HTML中的特殊字符?他们的转义字符是哪些?
    哪些是URL中的特殊字符?他们的转义字符是哪些?这种基础知识都没搞懂,就来做程序开发迟早是要还债的。