实际工作环境中hive导出数据到Mysql,总是报错
ncorrect string value: ‘\xF0\x9F\x98\x97\xF0\x9F…’
这是由于手机表情不支持UTF-8的
运营那边需要nickname,所以就将昵称中的表情过滤掉
1.写过滤表情逻辑
/**
* Created by Liutao on 2019/5/22 16:31
*/
public class FilterEmo extends UDF {
public String evaluate(String str) {
StringBuffer out = new StringBuffer();
if (str == null || ("".equals(str)))
return "";
char[] chars = str.toCharArray();
for(int i = 0; i < chars.length; i ++) {
if((chars[i] >= 19968 && chars[i] <= 40869) //中日朝兼容形式的unicode编码范围: U+4E00——U+9FA5
|| (chars[i] >= 11904 && chars[i] <= 42191)//中日朝兼容形式扩展
|| (chars[i] >= 63744 && chars[i] <= 64255)//中日朝兼容形式扩展
|| (chars[i] >= 65072 && chars[i] <= 65103)//中日朝兼容形式扩展
|| (chars[i] >= 65280 && chars[i] <= 65519)//全角ASCII、全角中英文标点、半宽片假