mysql中插入表數據中文亂碼問題的解決方法
一、問題
開發(fā)中遇到將其它數據庫數據插入到mysql數據庫表中一直會報類似如下錯誤:
Incorrect string value: '\xE6\x88\x91' for column 'name' at row 1
二、分析
1.我先去查了兩個數據庫表中此字段對應的類型都是 varchar,所以不存在類型不一致導致插入報錯的問題。
2. 排除字段類型不一致導致的錯誤后,我猜測是中文亂碼問題,然后插入純英文數據發(fā)現沒有報錯,所以確定了是中文亂碼問題。然后網上百度發(fā)現是mysql默認的編碼問題導致的中文亂碼。
三、解決方案
1. 檢查本地mysql安裝文件目錄下的my.ini配置文件,服務器和客戶端的默認編碼方式是否是utf8
[mysqld] # 服務端使用的字符集默認為UTF8 character-set-server=utf8 [client] # 設置mysql客戶端連接服務端時默認使用的端口 default-character-set=utf8
2.上一步無誤后,打開命令行,輸入:net start mysql
,啟動mysql服務;
顯示“服務已經成功啟動”之后,輸入命令“mysql”,使用數據庫;
查看數據庫表的字符集編碼格式:輸入命令 “ show create table test.xtt_test_copy;
”;
如上圖所示,發(fā)現默認是"latin1"并不是“utf8”,需要繼續(xù)手動修改,輸入命令 “ ALTER TABLE test.xtt_test_copy CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
”,繼續(xù)輸入命令 “show create table test.xtt_test_copy;
”查看默認數據庫表的字符集編碼改為了“utf8”;
查看數據庫的字符集編碼格式:輸入命令 “show creat database test;
”;
如上圖所示,發(fā)現默認,是"latin1"并不是“utf8”,需要繼續(xù)手動修改,輸入命令 “ ALTER DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
”,繼續(xù)輸入命令 “SHOW CREATE database test;
” ,查看默認數據庫表的字符集編碼改為了“utf8”;
3. 最后,重啟服務就可以了 ~
mysql> net stop mysql; mysql> net start mysql;
在我們平時使用mysql的過程中,經常會碰到中文亂碼的情況,根據平時的工作經驗我總結歸納了以下四個需要注意的地方:
1. mysql啟動時的字符集,在myini文件中配置 default-character-set=字符集 ,放在,[WinMySQLadmin]之上;
2. 數據庫建表的過程中設置字符集,在CREATE語句最后的 CHARSET=字符集 語句中設置;
3. 在驅動url中的選項中設置字符集,jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=字符集;
4. 在web顯示頁中設置顯示的字符集, <%@ page contentType="text/html; charset=字符集" language="java" import="java.sql.*" errorPage="" %>在servelt中則是response.setContentType("text/html;charset=字符集");
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
windows下mysql 8.0.12安裝步驟及基本使用教程
這篇文章主要為大家詳細介紹了windows下mysql 8.0.12安裝步驟及基本使用教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08mysql特殊語法insert?into?..?on?duplicate?key?update?..使用方
在我們的日常開發(fā)中經常會遇到過這樣的情景,查看某條記錄是否存在,不存在的話創(chuàng)建一條新記錄,存在的話更新某些字段,下面這篇文章主要給大家介紹了關于mysql特殊語法insert?into?..?on?duplicate?key?update?..使用方法的相關資料,需要的朋友可以參考下2023-04-04