微信小程序> 【微信小程序】微信小程序开发用户昵称中带有emoji表情的处理方法

【微信小程序】微信小程序开发用户昵称中带有emoji表情的处理方法

浏览量:782 时间: 来源:u011105380

       刚开始写小程序,获取客户昵称,后来发现用户昵称是可以为emoji表情的,而Mysql数据库中是不支持直接将emoji表情直接存入数据库的,后来在网站上找了一个方法将所有的昵称转变为Unicode编码存入数据库 例如:ud83cudf52这个样子的字符串


具体方法为:将str转变为Unicode未解码字符串:

        public static String unicode(String source){
                StringBuffer sb = new StringBuffer();
                char [] source_char = source.toCharArray();
                String unicode = null;
                for (int i=0;i<source_char.length;i++) {
                    unicode = Integer.toHexString(source_char[i]);
                    if (unicode.length() <= 2) {
                    unicode = "00" + unicode;
                }
                    sb.append("\u" + unicode);
              }

                return sb.toString()

        }

    其中的source就是需要转换的字符串。

     如果从数据库中获取需要将数据库中的Unicode未解码字符串转变为解码后的字符,具体方法为

     方法一:

            public static String decodeUnicode(String unicode) {     
                StringBuffer sb = new StringBuffer();
          
                String[] hex = unicode.split("\\u");
      
                for (int i = 1; i < hex.length; i++) {
                    int data = Integer.parseInt(hex[i], 16);
                    sb.append((char) data);
                }
                return sb.toString();  

         } 


        方法二:

            public static String decodeUnicode2(String dataStr) {     
                int start = 0;     
                int end = 0;     
                final StringBuffer buffer = new StringBuffer();     
                while (start > -1) {     
                    end = dataStr.indexOf("\u", start + 2);     
                    String charStr = null;     
                    if (end == -1) {     
                        charStr = dataStr.substring(start + 2, dataStr.length());     
                    } else {     
                        charStr = dataStr.substring(start + 2, end);     
                    }     
                      char letter = (char) Integer.parseInt(charStr, 16);   
                    buffer.append(new Character(letter).toString());     
                    start = end;     
                }     
                return buffer.toString();     

         }

        通过以上两种方法将数据库中的字符串转变成中文字符或者emoji表情

        但是后来又发现一个问题,就是无法通过模糊查询或者精确查询'ud83cudf52'这样的字符串,具体原因似乎是Mysql会将''舍去,所以 selece * from table where nick_name like '%ud83cudf52%' 这样查出来的是空的,如果需要查询这样的字符需要将''转变成'_'来进行查询 selece * from table where nick_name like '%_ud83c_udf52%' 这样就可以查出自己想查询的信息了。 

原文地址:https://blog.csdn.net/qq_34492495/article/details/79092992


微信小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎