转) javascript 中的escape 与C#互相转化

    技术2025-01-16  39

    修改:2008-10-20

    public static string Escape(string s)         {             StringBuilder sb = new StringBuilder();             byte[] ba = System.Text.Encoding.Unicode.GetBytes(s);             for (int i = 0; i < ba.Length; i += 2)             {                 if (ba[i + 1] == 0)                 {                     //数字,大小写字母,以及"+-*/._"不变                     if (                           (ba[i]>=48 && ba[i]<=57)                         ||(ba[i]>=64 && ba[i]<=90)                         ||(ba[i]>=97 && ba[i]<=122)                         ||(ba[i]==42 || ba[i]==43 || ba[i]==45 || ba[i]==46 || ba[i]==47 || ba[i]==95)                         )//保持不变                     {                         sb.Append(Encoding.Unicode.GetString(ba, i, 2));

                        }                     else//%xx形式                     {                         sb.Append("%");                         sb.Append(ba[i].ToString("X2"));                     }                 }                 else                 {                     sb.Append("%u");                     sb.Append(ba[i + 1].ToString("X2"));                     sb.Append(ba[i].ToString("X2"));                 }             }             return sb.ToString();

            }

    源文地址

    javascript : escape 编码与C# 的使用问题.

    οnsubmit="form1.Text1.value = escape(form1.Text1.value);"

     

     

    .cs处理 

     

      string  a  =  HttpUtility.UrlDecode(Text1.Value); Response.Write(a);

     

     

    // c#实现escape编码:(用在ajax中)然后在aspx用unescape解码,就不会出现乱码问题   private   string  escape( string  s)     {         StringBuilder sb  =   new  StringBuilder();          byte [] ba  =  System.Text.Encoding.Unicode.GetBytes(s);          for  ( int  i  =   0 ; i  <  ba.Length; i  +=   2 )         {                sb.Append( " %u " );             sb.Append(ba[i  +   1 ].ToString( " X2 " ));             sb.Append(ba[i].ToString( " X2 " ));         }          return  sb.ToString();     }     另外一些方法 ---------------------------- encodeURIComponent() / decodeURIComponent() encodeURI()/decodeURI() 注意上面两对javascript函数使用的编码多是utf-8 应次如果页面使用编码不是utf-8就需要做另外的处理   Asp.net 发数据给 javascript  在页面使用gb2312时 encodeString=HttpUtility.UrlEncode("中问是中问http://www.gyzs.net/", System.Text.Encoding.UTF8)  接收 <script>document.write(decodeURIComponent('<%=encodeString %>'));</script>     javascritp 发数据给asp.net 页面中有如下js脚本 <script>document.write("点我");</script> 如果web.config中配置使用gb2312那么就要做如下处理  Response.Write(HttpUtility.UrlDecode( Server.UrlEncode( Request["t"]),System.Text.Encoding.UTF8)); 如果web.config中使用的utf-8那么直接使用Request["t"]就可以    另外要注意表单提交使用post方法时,会对表单里的数据进行 url编码,注意不要重复

     

    <script xml:space="preserve" type="text/javascript"> google_ad_client = "pub-9768854185654179"; /* 468x60, 创建于 09-2-12 */ google_ad_slot = "6840815711"; google_ad_width = 468; google_ad_height = 60; </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" xml:space="preserve" type="text/javascript"> </script>

     

    最新回复(0)