我用ajax传递一个参数,然后php接收,用var_dump打印出来,长度是41,然后我把同样的字符串拷贝到php,直接var_dump打印出来,长度是42.如下:string(41) "<pclass="xg1">
[data]<spanclass="pipe">"
string(42) "<pclass="xg1">
[data]<spanclass="pipe">"字符串是一样的,长度不一样,不知道为何会造成如此差别,考虑到可能编码不一样,尝试过
接收的时候声明编码,如
header("Content-type: text/html; charset=GB2312");
获取把字符串统一转成一样的编码,都未解决问题。
请问这种情况最有可能的原因是什么?

解决方案 »

  1.   

    两个都用trim处理过了。对比打印出来的,也很对齐。
      

  2.   

    不可见字符看不出来的,不要用var_dump, 你试试看这样:for($i = 0; $i < strlen($s); $i ++)
    {
        echo ord($s{$i}) . '<br>';
    }
      

  3.   

    这是操作系统引起的差异
    window 系统是 回车换行(\r\n)
    linux 系统是 换行(\n)正好差一个字符
      

  4.   


    我感觉可能也是和换行有关系,因为我用一段不带换行的字符串测试的时候,长度就一样了。可是我测试的时候都是window操作系统,为什么有差异呢?
      

  5.   

    print_r(unpack('H*', $str));
    看一下就知道了!
    瞎猜有什么用?
      

  6.   


    $str =  str_replace("\n", "\r\n", $str);处理之后,两个字符串就一样了,说实在,怎么这么奇怪,同一个操作系统,怎么js的传过来的这么诡异。