$mode = 'zhuan';function my_encode()
{
   if($mode == 'zhuan')
   {
$mode = 'huan';
$value = $_POST['obj']; //正则表达式处理略 echo '<input type="button" name="btn" value="'.'还原'.'" />'
   }
   else
   {
$mode = 'zhuan';
$value = $_POST['obj']; //unescape处理
echo '<input type="button" name="btn" value="'.'转化'.'" />'
   }   echo '<input type="text" name="obj" value="'.$value.'" />';
}

解决方案 »

  1.   


    $value = "中国";
    $mode = "zhuan";
    if($mode=="zhuan")
    {
      $value =  preg_replace("/(%u)(\w{4})/i","\\u$2", escape($value));
      echo preg_replace("/\\\\u/i","%u",$value);
    }
    else
    {
      echo unescape(preg_replace("/\\\\u/i","%u",$value));
    }function escape($str) 
    {
      preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);
      $ar = $r[0];
      foreach($ar as $k=>$v) 
      {
        if(ord($v[0]) < 128)
          $ar[$k] = rawurlencode($v);
        else
          $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
      }
      return join("",$ar);
    }function unescape($str) 
    {
      $str = rawurldecode($str);
      preg_match_all("/(?:%u.{4})|.+/",$str,$r);
      $ar = $r[0];
      foreach($ar as $k=>$v) {
        if(substr($v,0,2) == "%u" && strlen($v) == 6)
          $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
      }
      return join("",$ar);
    }
      

  2.   

    调试错误
    Notice: iconv() [function.iconv]: Detected an illegal character in input string in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\test\csdn\csdntest.php on line 23Notice: iconv() [function.iconv]: Detected an illegal character in input string in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\test\csdn\csdntest.php on line 23
    %u6d93%u%u
    咋办