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']);
发布了31 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/oZuoYu123/article/details/84750131
今日推荐