微信公众号开发的时候经常需要获取用户的微信信息,用户的微信昵称是一个非常重要的参数.但是,很多用户的微信昵称中含有一些特殊的表情.如:等,这些特殊的表情符号并不能被数据库识别,因此在进行用户信息的存取时需要我们手动处理.如下,便是处理方式:
1.导入maven依赖:
<!-- 处理emoji -->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>java-emoji-converter</artifactId>
<version>0.0.1</version>
</dependency>
2.使用工具类将带有表情符号的字符串进行处理,工具类如下:
package org.silk.Util;
import com.github.binarywang.java.emoji.EmojiConverter;
/**
* 表情处理类
* Created by dangsl on 2018/4/8.
*/
public class EmojiUtil {
private static EmojiConverter emojiConverter = EmojiConverter.getInstance();
/**
* 将emojiStr转为 带有表情的字符
* @param emojiStr
* @return
*/
public static String emojiConverterUnicodeStr(String emojiStr){
String result = emojiConverter.toUnicode(emojiStr);
return result;
}
/**
* 带有表情的字符串转换为编码
* @param str
* @return
*/
public static String emojiConverterToAlias(String str){
String result=emojiConverter.toAlias(str);
return result;
}
}
3.问题的根源在于数据库无法识别这些特殊表情,因此在insert操作的时候报错.所以我们只需要在插入之前对数据进行处理.在这里,我直接在用户实体的set方法中进行了处理,如下:
/**昵称
*@return
*/
public String getNickName(){
return nickName;
}
/**昵称
*@param nickName
*/
public void setNickName(String nickName ){
if (StrUtil.isNotBlank(nickName)){
nickName = EmojiUtil.emojiConverterUnicodeStr(nickName);
}
this.nickName = nickName;
}