如果寫入資料庫出現類似以下錯誤
org.mariadb.jdbc.internal.util.dao.QueryException: Incorrect string value: ‘\xE8\x87\xBA\xE5\x8C\x97…’ for column
先檢查資料庫的編碼設定,例如資料庫名稱為 mydb
mysql mydb
show variables like ‘char%’;
character_set_database 的設定可能是預設值 latin1 與你的資料編碼不一致,因而出現上述問題
建決方法是將資料庫 drop 掉用以下指令在建立資料庫時指定編碼,例如
create database mydb character set ‘utf8’
這時候再檢查一次 character_set_database 應該是顯示 utf8,後續建立的 table 也都會採用這個編碼
附註:
檢查資料庫內 table 編碼可以用 show table status
檢查 table 內欄位編碼可以用 show full columns from <your table>
CentOS 7 設定 character_set_server 則是在 /etc/my.cnf.d/server.cnf 的 server section 加一行
character_set_server=utf8