码迷,mamicode.com
首页 > 数据库 > 详细

java项目向mysql中写入emoji表情

时间:2017-10-19 12:32:59      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:cti   builder   ase   lob   utf8   l数据库   mysql数据库   mys   dep   

前提:mysql数据库版本不能低于5.5。

第一种方法:百度一搜一大堆,主要内容就是:修改mysql配置文件(需要重启数据库),修改表和字段的编码,都改成utf8mb4。

 

第二种方法:从jdbc入手,每次调用数据库前执行一下 set names utf8mb4;

使用druid数据源的项目,可以在配置文件中增加<property name="connectionInitSqls" value="set names utf8mb4;"/>,

其他数据源应该也有类似的配置。

 

第三种方法:将要存入的内容重新编码,写入前用new BASE64Encoder().encode()编码,从数据库读取后用new BASE64Decoder().decodeBuffer()解码。

 

第四种方法:使用blob类型存储emoji表情,blob类型是二进制类型,不关心编码格式,读取之后转成String即可。

 

另类方法:这个不算是解决写入emoji方法,只是在代码中把emoji内容过滤掉(有点暴力),防止写入数据库报错。

public static String filterUtf8mb4(String str) {
		final int LAST_BMP = 0xFFFF;
		StringBuilder sb = new StringBuilder(str.length());
		for (int i = 0; i < str.length(); i++) {
			int codePoint = str.codePointAt(i);
			if (codePoint < LAST_BMP) {
				sb.appendCodePoint(codePoint);
			} else {
				i++;
			}
		}
		return sb.toString();
	}

  emoji字符对应的code point 大于 U+FFFF,把这些过滤掉再写入数据库就不会报错了。 code point参考:http://www.cnblogs.com/chrischennx/p/6623610.html

java项目向mysql中写入emoji表情

标签:cti   builder   ase   lob   utf8   l数据库   mysql数据库   mys   dep   

原文地址:http://www.cnblogs.com/du-better/p/7691297.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!