可以说是很坑了,找了很久的原因。
最开始是在读取redis的时候每次都查找不到数据,就像这样:

$key = isset($_GET['token'])?(string)$_GET['token']:0; //abcd
$redis -> get($key); //找不到数据
$redis -> get('abcd'); //找到数据

前端是从缓存里读取的token,发到后台后却在redis里拿不到数据!?

后来在一次次测试后发现,前端打印数据时的字符串长度有问题
打印字符串'abcd'时length居然是6
复制了这行字符串粘贴到控制台上后一看前面有两个小红点,标识为ufeff
这是为了让记事本识别UTF8编码的文件所做的标识

但我在把输出文件改为UTF8不带BOM的编码后,发现问题还是没有解决
最后利用网上的BOM检测程序找到原因,在微信小程序的加密数据解密算法的示例文件中含有BOM头!
修改编码清除BOM头后打印结果终于正常

添加新评论