java - 使用 mysql 连接器 8 针对服务器 5.6.22 保存表情符号
问题描述
我有一个以前使用过的系统:
- mysql服务器5.6.22
- mysql 连接器 5.1.47
- 特定列设置为使用 utf8mb4_unicode_ci
而且我能够使用java保存和读取该表列的表情符号。
mysql连接器现在不知什么原因升级到了8.0.12,保存表情时系统报错,
原因:java.sql.SQLException:不正确的字符串值:'\xF0\x9F\x90\x91' for column 'name' at row 1
任何人都知道如何解决这个问题?非常感谢。
顺便说一句,我使用的 JDBC 连接字符串已经有 useUnicode=true 和 characterEncoding=UTF-8
解决方案
那只羊需要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 就会使用该设置。这相当于字符集的自动检测。
推荐阅读
- android - Ionic - HTTP POST 请求不适用于本机 Android,但适用于 Ionic Devapp
- python - 无头 chromedriver python “未捕获的 tagerror”
- php - (Woocommerce)在除购物车和结帐页面之外的所有地方都显示价格
- django - 在不使用模型的情况下在 django 中进行分页
- c - C语言中的execl
- protractor - 有什么方法可以从 VSTS 集成或运行量角器测试并将结果带回 VSTS?
- python-3.x - 如何在 Anaconda 中安装 keras 1.2.2
- javascript - 如何在jQuery中的i标签中获取孩子
- r - r plot() 绘制箱形图而不是 xy 图
- elasticsearch - 有人研究过 Elastic-search 和 GraphQL 的比较吗?