Non-breaking space 和 空格 的坑

早上来的时候,移动端同学来问我为啥查询一个条件查不到并发接口如下:

api.php?title=&zzs=YANJI%20ERTONG%20FOOD%20CO.%2CLTD&customer_id=223&token=&s=api%2Fchoujian.cj_korea%2Flists.json

问题集中于 zzs 这个参数,初步认定为 没有 YANJI ERTONG * ,导致了查询失败,于是直接去数据库 LIKE 查询,发现没有符合此条件的结果,遂认定问题。

但,为了严禁起见,只搜索 YANJI ,竟然出现了

再次确认url 参数中的 zzs 参数,字面上没有发现区别,于是考虑是否是 编码问题,遂要来演示demo,打开F12,分别手动输入一遍和粘贴数据库中存储的数据,发现 两个 request 不一致,且程序运算的标示符不一致,更改 粘贴数据的空格为手动输入后,结果一致。

于是目光转移至 空格的编码,页面输出两个空格编码不一致:

%20 和 %C2%A0

搜索确定为以下原因:

https://en.wikipedia.org/wiki/Non-breaking_space

%C2%A0  为   的 UTF-8 编码,故不同空格搜索结果不同。

如上,数据库不好改,且此问题仅出现在 韩国 模块下,替换之:

$map['zzs'] = str_replace(' ', ' ', $map['zzs']);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值