ajax接收到的字符串长度不一样问题

区块链研究 2012-09-28 06:03:28
我用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");
获取把字符串统一转成一样的编码,都未解决问题。
请问这种情况最有可能的原因是什么?
...全文
199 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
区块链研究 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

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

$str = str_replace("\n", "\r\n", $str);

处理之后,两个字符串就一样了,说实在,怎么这么奇怪,同一个操作系统,怎么js的传过来的这么诡异。
xuzuning 2012-09-28
  • 打赏
  • 举报
回复
print_r(unpack('H*', $str));
看一下就知道了!
瞎猜有什么用?
区块链研究 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

这是操作系统引起的差异
window 系统是 回车换行(\r\n)
linux 系统是 换行(\n)

正好差一个字符
[/Quote]

我感觉可能也是和换行有关系,因为我用一段不带换行的字符串测试的时候,长度就一样了。可是我测试的时候都是window操作系统,为什么有差异呢?
xuzuning 2012-09-28
  • 打赏
  • 举报
回复
这是操作系统引起的差异
window 系统是 回车换行(\r\n)
linux 系统是 换行(\n)

正好差一个字符
Meteorlet 2012-09-28
  • 打赏
  • 举报
回复
不可见字符看不出来的,不要用var_dump, 你试试看这样:

for($i = 0; $i < strlen($s); $i ++)
{
echo ord($s{$i}) . '<br>';
}
区块链研究 2012-09-28
  • 打赏
  • 举报
回复
两个都用trim处理过了。对比打印出来的,也很对齐。
loveifa 2012-09-28
  • 打赏
  • 举报
回复
是不是有空格

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧