问题出现的现象:
最近公司开发微信公众号邀请码,需要对用户输入进行限制,允许输入的是字母和数字,其他输入会使用正则表达式禁止。但是有iOS用户反映在输入字母过程中,经常几个字母之后,邀请码不对,查看公司微信项目的日志,发现邀请码字母之间是?连接。假设用户输入的邀请码是AB1CFH,日志打印的是A B1C F H。找了好久原来是用户用英文,数字键盘是没问题的,但是用中文键盘输入英文字母就会出现上述现象。
1.刚开始以为是普通空格:过滤邀请码前中后空格 错误
2.看日志打印空格是?:过滤中文?和英文?错误
问题的最终解决方法:
首先在js里对用户输入的邀请码进行加密:encodeURI($('#code').val())
然后在java端先对邀请码去除iOS自带空格:code = code.replaceAll("%E2%80%86", "");
然后再解码:code = URLDecoder.decode(code, "UTF-8");
最后去除普通空格:code = code.replaceAll("[\\s,?]*", ""); 终于大功告成了。。。。。。。。。。。。。。。。。。。。