从mongo中查出了一个文档,用var_dump,发现它的_id长度是23,但是显示的却是一个17字节的mac地址,于是我觉得很奇怪,
用_dump_string_assic函数输出了这个_id,函数如下,输出后,更奇怪:
1,   "="为什么不输出呢?
2,  (44) (39) (89) (47) (08) (38) 这些assic都查可打印的,为什么不输出呢?
array(6) {
 ["_id"]=>
 string(23) "0c:96:bf:f6:2a:7c"
...
...[mblen=23,(44) (39) (89) (47) (08) (38) (0=48) (c=99) (:=58) (9=57) (6=54) (:=58) (b=98) (f=102) (:=58) (f=102) (6=54) (:=58) (2=50) (a=97) (:=58) (7=55) (c=99) ]
 function _dump_string_assic($str) {
                $c = strlen($str);
                $s = '';
                for($i = 0; $i < $c; $i++) {
                        $s .= "({$str[$i]}" .  "=" . ord($str[$i]) . ') ';
                }
                return "[mblen=".mb_strlen($str).",$s]";
 }

解决方案 »

  1.   

    设查出的数组在 $data 中
    echo base64_encode($data['_id']);
    贴出结果
      

  2.   

    9Iu9k9CKMGM6OTY6YmY6ZjY6MmE6N2M=PS:mac下securecrt连接上的就不显示特殊字符,在windows上可以,我也是醉了,securecrt的字符编码都是utf8
      

  3.   

    $s = base64_decode('9Iu9k9CKMGM6OTY6YmY6ZjY6MmE6N2M=');
    echo $s, PHP_EOL;
    echo bin2hex($s);
    GBK环境中看到
    魦綋袏0c:96:bf:f6:2a:7c
    f48bbd93d08a30633a39363a62663a66363a32613a3763UTF-8环境中看到
    [color=#FF0000]
      

  4.   

    有趣,被 CSDN 贪污了