没有"?characterEncoding = UTF-8"的字符串值不正确

Aki*_*i K 7 java mysql utf-8 character-encoding

我试图在我的数据库中的字段中插入一些文本,我有一个emojis的问题.会发生的是,如果我没有设置我的连接url,jdbc:mysql://localhost:3306/MyDatabase?characterEncoding=UTF-8那么服务器将存储emojis就好了,但也会将非拉丁字符存储为问号.

现在如果我设置我的连接url那么服务器将不喜欢emojis并将输出错误:

Incorrect string value: '\xF0\x9F\x98\xB1\xF0\x9F...' for column 'fullTweet' at row 1

我已经在本地服务器上完成了utf8兼容性的所有必要步骤:

  1. 我说行character-set-server=utf8mb4my.ini
  2. 查询show variables like 'character_set_server'返回utf8mb4
  3. 我用查询创建我的数据库 CREATE DATABASE twitter DEFAULT CHARACTER SET utf8mb4
  4. 默认情况下,我的表格和表格的所有字段都在使用utf8mb4_general_ci(我可以看到phpmyadmin)

缺什么?我确信我已经完成了所有必要的步骤,但仍然无法使其工作,要么它只存储拉丁字符,要么不存储表情符号.


我之前的一个问题的其他信息:

我可以在数据库中手动输入表情符号,它们显示在调试器中显示的内容(如框).我运行这个查询:

INSERT INTO `tweets`(`id`, `createdAt`, `screenName`, `fullTweet`, `editedTweet`) VALUES (450,"1994-12-19","john",_utf8mb4 x'F09F98B1',_utf8mb4 x'F09F98B1')
Run Code Online (Sandbox Code Playgroud)

这就是表格中的行:

1

Lig*_*ght 0

试试这个-->

convert('string' using utf8)
Run Code Online (Sandbox Code Playgroud)

或者

convert('string',char)
Run Code Online (Sandbox Code Playgroud)

或者

convert('string' using latin1)
Run Code Online (Sandbox Code Playgroud)

或使用您在表中设置的任何字符编码。我提供的代码是mysql函数。