微信开发——40163和40001错误

最近做微信开发,部署到服务器上后有条测试数据错误了,在获取code的时候显示40163和40001错误,一般40001错误就是微信公众号的密钥不对,但是我看了是对的,并且前面几条数据都没有问题,就只有这一条错误,后来发现,因为这条数据获取的微信用户名称里面有emoji表情,这是个大坑

解决办法:

在controller层方法加上:

SnsUser su = new SnsUser();
        su.setOpenid(userObj.getString("openid"));
        String nickname = userObj.getString("nickname");
        nickname = nickname.replaceAll("[^\\u0000-\\uFFFF]", "*");
        Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",
                Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
        Matcher emojiMatcher = emoji.matcher(nickname);
        if(emojiMatcher.find()) {
            nickname = emojiMatcher.replaceAll("*");
        }
        su.setNickname(nickname);

这样会把表情变成*存入数据库,这样就解决了40163和40001的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值