使用mysql连接器8针对服务器5.6.22保存表情符号

时间:2018-09-29 08:06:36

标签: java mysql emoji

我有一个以前使用过的系统:

  • mysql服务器5.6.22
  • mysql连接器5.1.47
  • 将特定列设置为使用utf8mb4_unicode_ci

而且我能够使用Java保存该表列中的表情符号并从中读取表情符号。

由于某些原因,mysql连接器现在已升级到8.0.12,并且在保存表情符号时系统会抱怨

  

原因:java.sql.SQLException:不正确的字符串值:   第1行“名称”列的“ \ xF0 \ x9F \ x90 \ x91”

任何人都知道如何解决此问题?非常感谢。

顺便说一句,我正在使用的JDBC连接字符串已经具有useUnicode = true和characterEncoding = UTF-8

1 个答案:

答案 0 :(得分:0)

那只绵羊需要utf8mb4,而不是整个MySQL的utf8。不仅是专栏,而且还有连接。

对于Java:

在JDBC URL中添加?useUnicode=yes&characterEncoding=UTF-8(或者可能是= true和= utf8)

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8" %>

compileJava.options.encoding = 'UTF-8'

<form method="post" action="/your/url/" accept-charset="UTF-8">

要将4字节UTF8与Connector / J一起使用,请使用character_set_server=utf8mb4配置MySQL服务器。只要未在连接字符串中设置characterEncoding,Connector / J将使用该设置。这等效于自动检测字符集。