首页 > 解决方案 > 使用 mysql 连接器 8 针对服务器 5.6.22 保存表情符号

问题描述

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

而且我能够使用java保存和读取该表列的表情符号。

mysql连接器现在不知什么原因升级到了8.0.12,保存表情时系统报错,

原因:java.sql.SQLException:不正确的字符串值:'\xF0\x9F\x90\x91' for column 'name' at row 1

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

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

标签: javamysqlemoji

解决方案


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

对于 Java:

添加?useUnicode=yes&characterEncoding=UTF-8到 JDBC URL(或者可能是 =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. 只要未在连接字符串中设置 characterEncoding,Connector/J 就会使用该设置。这相当于字符集的自动检测。


推荐阅读