在php中,一下两个MD5的结果值是不一样的,md5('{"a":1,"b":"\u4e2d\u6587"}')md5('{"a":1,"b":"中文"}')但是‘\u4e2d\u6587’其实就是‘中文’的unicode编码,请问在php中怎么把{"a":1,"b":"\u4e2d\u6587"}转换成{"a":1,"b":"中文"}?

解决方案 »

  1.   


    <?php
    function code2utf($num){
      if($num<128)return chr($num);
      if($num<2048)return chr(($num>>6)+192).chr(($num&63)+128);
      if($num<65536)return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
      if($num<2097152)return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128).chr(($num&63)+128);
      return '';
    }
    function deu($s){
      return code2utf(hexdec($s));
    }
    function conv_js_utf8($s){
      return iconv('UTF-8','GBK',preg_replace('/(\\\u|%u)(....)/e','deu("\\2")',$s));
    }
    $s=conv_js_utf8('\u4e2d\u6587');
    echo $s;
    ?>
      

  2.   

    要说一下php内 单引号 单引号内都作为字符串。显然这两个字符串是不相等的。