使用Mysql伺服器的utf8字元編碼,在存入emoji表情時會報異常:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1
原因:
utf8是三位元組,utf8mb4是4位元組而emoji表情也是4位元組。
解決方法一-----逐個配置
- 修改資料庫編碼
- 修改表編碼
- 修改資料庫連線
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&autoReconnect=true&rewriteBatchedStatements=TRUE
username=root
password=root\
大於5.1.13的版本去掉characterEncoding=utf8就ok,不去掉都是這種錯:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94'
解決方法二-----全域性配置(具體配置意思可另做參考)
修改mysql配置檔案my.cnf(windows為my.ini)
my.cnf一般在etc/mysql/my.cnf位置。找到後請在以下三部分裡新增如下內容:
[client] default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
問題 參考:blog.csdn.net/a445849497/…
資料庫顯示問號,可能是資料庫配置導致顯示問題,但是顯示出來是正常就沒有問題,
但是如果顯示就有問題,那就是儲存的時候沒有按照utf8mb4儲存,或者資料庫設定存
儲的字符集也不是utf8mb4。 最簡單的兩步驟 1、欄位字符集為utf8mb4
,然後插入資料的時候設定字符集也為utf8mb4 一般這樣即可
複製程式碼