最近在開發過程中,使用到mysql的數據庫,而在將中文數據插入到數據庫的時候出現了數據亂碼的問題,在網上找了很多方法,問了很多人,試了很久才發現網上有的方法是不行的,因此在此記錄下,以便他人查找。
查看字符編碼
首先,將中文插入到數據庫亂碼是因為沒有將數據庫編碼設置為支持中文的編碼,mysql的默認編碼是Latin1,不支持中文,應該設置為utf8查看自己的數據庫編碼是否已設置好,進入數據庫,輸入:show variables like "char%",如果出現下面的結果
說明你的數據庫編碼正確,無需修改,應該是頁面或者其他編碼的問題。如果跟上面的結果不同,說明需要修改數據庫的編碼。
在windows系統下
1、在mysql的安裝目錄下找到my.ini文件(如果沒有的話就把my-medium.ini複制,然後重命名為my.ini即可)
2、在my.ini文件中找到[client]和[mysqld]字段,在下面均加上default-character-set=utf8,保存並關閉
3、重啟mysql服務
在linux系統下
1、打開配置文件,我使用的linux版本是ubuntu,配置文件在/etc/mysql/my.cnf
2、在[client]和[mysqld]字段下面均添加default-character-set=utf8,保存並關閉
3、重啟mysql服務
注意:
如果重啟成功,並查看數據庫編碼,如果結果如下
恭喜你,說明你已經修改成功了
如果在linux下重啟mysql服務的時候出現Job failed to start,在window下重啟失敗,這是因為你安裝了高版本的mysql(mysql5.5以上),在高版本對字符編碼方式修改的辦法中,在[mysqld]下的修改發生了變化,正確方式如下:
[mysqld]下添加的應該為:
character-set-server=utf8
collation-server=utf8_general_ci
重啟mysql,現在再次查看字符編碼,如果跟下面一致,說明成功了
好吧,以上就是mysql字符亂碼問題的解決,自己想記錄下來,方便自己以後再次用到或者為別人需要是查閱,如果有錯誤的地方,請指出,謝謝。