1. 程式人生 > >過JS向PHP頁面傳遞中文引數的兩種方法

過JS向PHP頁面傳遞中文引數的兩種方法

在網上找的,先留下來,以備後用,看評論說,這個是針對UTF-8編碼的

暫時找到了兩種最常用的方法
////////////////////////////////////
// 第一種 直接URL編碼 比較方便
JS:

[javascript] view plain copy
  1. <script type=”text/javascript”>  
  2. string = encodeURIComponent(string);  
  3. location.href = index.php?keyword=’+string;  
  4. </script>  
————————————————
php:
  1. $keyword = (isset($_GET
    ['keyword'])) ? $_GET['keyword'] : ”;  
//////////////////////////////////////////////////////////////////
//第二種使用escape編碼比較複雜 但兼任性似乎要好,通過ajax傳遞的時候可能需要
JS:
[javascript] view plain copy
  1. ……..  
  2. $.getJSON(“admin.php?action=”+escape(action),function(json){  
  3. })  
  4. …………  

PHP:

  1. function unescape($str) { //定義unescape函式
  2. $str = urldecode($str);  
  3. preg_match_all(“/(?:%u.{4}|&#x.;|&#d+;|.+)/U”,$str
    ,$r);  
  4. $ar = $r[0];  
  5. foreach($aras$k=>$v) {  
  6. if(substr($v,0,2) == “%u”)  
  7. $ar[$k] = iconv(“UCS-2BE”,”utf-8″,pack(“H4″,substr($v,-4)));  
  8. elseif(substr($v,0,3) == “&#x”)  
  9. $ar[$k] = iconv(“UCS-2BE”,”utf-8″,pack(“H4″,substr($v,3,-1)));  
  10. elseif(substr($v,0,2) == “&#”) {  
  11. $ar[$k] = iconv(“UCS-2BE”,”utf-8″,pack(“n”,
    substr($v,2,-1)));  
  12. }  
  13. }  
  14. return join(“”,$ar);  
  15. }  
  16. $action=unescape($_GET["action"]);