mysql字符串不支持emoj表情的处理方法

一,修改数据库支持utf8mb4,注意低版本的mysql不支持utf8mb4

 修改my.cnf如下

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

二,存入blob中

代码

	@Override
	public int insertOrUpdateDataValueByBytes(String no, String value) {
		try {
			byte[] bytesValue = value.getBytes("utf-8");
			Object[] obs = new Object[] { no, bytesValue, new Date() };
			return jdbcTemplate.update("REPLACE INTO t_data_bytes (no, value, timestamp) VALUES(?, ?, ?)", obs);
		} catch (UnsupportedEncodingException e) {
			LogCore.BASE.error("insertOrUpdateDataValueByBytes error,k={},v={}",no, value, e);
			return -2;
		}

	}

	@Override
	public void initDataValueMapByBytes(Map<String, String> map) {
		Predicate<Map<String, Object>> pr = x -> Util.nonNull(x.get("no"), x.get("value"));
		jdbcTemplate.queryForList("SELECT * FROM t_data_bytes").stream().filter(pr).forEach(x -> {
			try {
				String key = String.valueOf(x.get("no"));
				String value = new String((byte[]) x.get("value"), "utf-8");
				map.put(key, value);
			} catch (Exception e) {
				LogCore.BASE.error("init DateValueMapByBytes err:", e);
			}
		});
	}


三,使用base64

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值