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();
}
.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>