字符串——json_encode

最近在做sns系统 虽然代码不少,但一直很顺利
可今天早上再测试主页面的时候出了个问题,我发表中文状态的话 竟然ajax get不过来
结果就一直在找问题 从sql到controller到view再到前台js 看问题出在了哪里
最后发现是controller里的json出了问题 原来一直在用开发团队写的return_json这个函数
结果这回中文竟然转换成null!! 没办法只能在看 这个函数使用json_encode实现的
于是乎一条一条encode我的html代码测试 一测就测了2个多小时 俺是一条一条feed分解到最小span级别的去json_encode的 :cry: :cry:
经过努力 发现是feed里的一条隐藏span出了问题 这个span本来是存储要转发的内容的 也就是feed的简写 比如“说:我是....”这种 当然不能把140字feed全写上去 于是俺就用了substr这个函数 :twisted: :twisted: 结果问题就在这里
php的substr默认一个中文字是3个字节,我截得10。。。。
像这种
$str = substr('我是谁啊',0,4);
echo $str;

就会输出
我�
这玩意
而这种乱码json_encode处理完是null 更令人气愤的是如果一串字符串中有一个乱码 json_encode处理完毕这串都是null!!
我说feed咋get不到 做了个测试
$str = substr('我是谁啊',0,4);
$str = '<td class="class"></td>'.$str.'<br>';
$data = array(
1 => 'ABC',
2 => $str
);
echo json_encode($data);

输出就是这样
{"1":"ABC","2":null}

也就是俺辛辛苦苦搞得html全没了
不过问题好歹解决了
在测试之中 我还看了人人 大街 t.sina的feed获取形式
很少有用json的
renren 大街是直接返回html 而新浪是返回json里面带feed的url 再用js去url获取
哪有像我这样直接把html转成json再返回的 没办法 算经验加教训吧 :cry:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值