標籤:特殊符號 server java logo script word ref www strong
最近在項目中用到請求一個地址的時候,會傳個JSON資料。剛開開始沒什麼問題,後來發現有特殊符號就會有問題,找到一些解決方案,在此記錄下。
原文:http://www.cnblogs.com/lmfeng/archive/2011/11/08/2240991.html
escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不編碼字元有82個:!,#,$,&,‘,(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不編碼字元有71個:!, ‘,(,),*,-,.,_,~,0-9,a-z,A-Z
1.
JS: escape :
- js使用資料時可以使用escape
- 例如:搜藏中history紀錄。
- 0-255以外的unicode值進行編碼時輸出%u****格式,其它情況下escape,encodeURI,encodeURIComponent編碼結果相同。
解碼使用:unescape
C#:
HttpUtility.UrlEncode
HttpUtility.UrlDecode
2.
JS: encodeURI :
- 進行url跳轉時可以整體使用encodeURI
- 例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");
解碼使用decodeURI();
C#: decodeURIComponent
3.
JS: encodeURIComponent :
- 傳遞參數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字元截斷。
- 例如:<script language="javascript">document.write(‘<a href="http://passport.baidu.com/?logout&aid=7& u=‘+encodeURIComponent("http://cang.baidu.com/bruce42")+‘">退出</a& gt;‘);</script>
解碼使用decodeURIComponent()
C#:
[HttpContext.Current.]Server.UrlDecode
[HttpContext.Current.]Server.UrlEncode
JS、C#編碼解碼