微信小程序用户昵称包含表情图片的解决方案

好好的用文字不好嘛,弄什么表情啊=====

但是问题还是要解决,走过的坑,分享一下解决方案,个人认为这个是全网最简单的。

之前的做法是直接传递给后端,后端再返回来的时候,表情就会变成?!这种乱码。

①直接粗暴去掉表情,但是这样会导致一个问题,有些用户的昵称只有表情,全给干没了,昵称就是空了、、空了、、

    //获取到的用户昵称        
    let wechatName = res.userInfo.nickName
    //检测是否含有表情
    var regRule = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g;
    if(wechatName.match(regRule)){
       wechatName = wechatName.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, "");
       console.log(wechatName)
    }

②发现小程序在传递参数的时候,昵称是自动进行了url转码,表情也被转码了,那这样后端直接返回给我编码后的昵称,前端再进行解码就可以还原表情了。

发现个问题,自动转码后的昵称到了后端会自动解码。问题不大,自己手动转一下就传给后端就行

encodeURI(wechatName)

经测试,decodeURI(wechatName) 和 decodeURIComponent(wechatName) 都可解码

decodeURI(wechatName) 
decodeURIComponent(wechatName) 

关于 url编码和解码,查阅资料后总结

encodeURIComponent 函数应该用于编码 query string 的参数值。

encodeURI 和 encodeURIComponent 之间的区别是 encodeURIComponent 编码整个字符串,而 encodeURI 忽略协议前缀(’http://’)以及域名。

encodeURIComponent 被设计用来编码所有的内容,而 encodeURI 会忽略 URL 中的域名部分。

1、escape 和 unescape

原理:对除ASCII字母、数字、标点符号 @  *  _  +  -  .  / 以外的其他字符进行编码。

2、encodeURI 和 decodeURI

原理:返回编码为有效的统一资源标识符 (URI) 的字符串,不会被编码的字符:! @ # $ & * ( ) = : / ; ? + '

encodeURI()是Javascript中真正用来对URL编码的函数。

编码:encodeURI(encodeURI(data.oneTypeName))

解码:decodeURI(request["OneTypeName"]);

3、encodeURIComponent 和 decodeURIComponent

原理:对URL的组成部分进行个别编码,而不用于对整个URL进行编码

encodeURI(encodeURI(data.oneTypeName))

decodeURI(request["OneTypeName"]);
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值