今天使用mysql,用java程序往mysql中寫數據,出現以下錯誤:java
java.sql.SQLException: Incorrect string value: '\xE6\x88\x91\xE7\x9A\x84...' for column 'groupName' at row 1mysql
甚是糾結,我本來覺得應該是如下問題之一:sql
(1).建立數據庫的時候數據編碼設置錯誤數據庫
(2).鏈接數據庫的時候數據編碼設置錯誤post
對於(1),我刪除來原來的數據庫,從新建立一個新的數據庫在設置編碼時,個人設置以下:編碼
character set:utf8 -- UTF-8 Unicodespa
collation:utf8_general_ci.net
例如:code
create database myuser default character set utf8 collate utf8_general_ci;blog
發現這樣設置以後,不能解決這個問題。
對於(2),我將鏈接語句寫爲:
"jdbc:mysql://" + ip + ":3306/users?useUnicode=true&characterEncoding=utf8"
但問題仍然沒有解決。
又仔細觀察我寫的程序,發如今程序中有向數據庫中建立表的操做,語句以下:
"create table friendsList (qq varchar(7) primary key,remark varchar(20),groupName varchar(20)) ;"
這樣,問題變得明朗了,原來建立每張表的時候都必須設置數據編碼方式,改後的語句以下:
"create table friendsList (qq varchar(7) primary key,remark varchar(20),groupName varchar(20)) charset utf8 collate utf8_general_ci;"
總結一下,引發本文章標題這樣的問題的緣由有如下幾個:
(1).建立數據庫的時候數據編碼設置錯誤
create database myuser default character set utf8 collate utf8_general_ci;
(2).鏈接數據庫的時候數據編碼設置錯誤
"jdbc:mysql://" + ip + ":3306/users?useUnicode=true&characterEncoding=utf8"
(3).建立表的時候數據編碼設置錯誤
"create table friendsList (qq varchar(7) primary key,remark varchar(20),groupName varchar(20)) charset utf8 collate utf8_general_ci;"