向mysql插入表中的中文顯示為亂碼或問號的解決方法,親測有用!!
今天在做ssh的博客項目時發現mysql數據庫中的中文顯示為問號,網上查閱了很多資料,都不是很全,所以我總結一下,供大家參考和自己復習。
1.我的計算機配置: windows系統(linux沒試過) mysql 5.6
mysql中文顯示亂碼或者問號是因為選用的編碼不對或者編碼不一致造成的,我是通過修改my.ini配置文件。(配置文件在安裝的根目錄下如下圖)
原來的為my-default.ini (復制裏面的內容改為my.ini,也就是重新命名)
2.然後在my.ini如下修改
[mydqld]和[client]段加入
default-character-set=utf8 (有的版本不支持default-character-set=utf8,用character_set_server=utf8來取代 default-character-set=utf8即可)
如果沒有[client]就手工加入[client]段
【1】在[client]節點下添加 (這個如果是另一種character_set_server=utf8 這樣寫我的會報錯1067【mysql服務無法啟動】,大家可以試試) (這個是客戶端的編碼配置)
default-character-set=utf8
【2】在[mysqld]節點下添加 (這個是服務器端編碼的配置)(註:collation是排序方式)
character-set-server=utf8
collation-server=utf8_general_ci
修改後如下圖所示:
3.然後重啟mysql即可
1)計算機---->右鍵--->管理---->服務和應用程序--->服務--->找到mysql即可
2)我比較喜歡用命令行
以管理員身份運行cmd.exe,進行如下操作。
關閉服務 net stop mysql
開啟服務 net start mysql
END: 然後就可以來查看是否變了編碼格式。還是在cmd中
1)輸入 mysql -u root -p 進入mysql數據庫
2)鍵入密碼:*****(自己的密碼,沒有的話直接回車鍵,嗯其他情況如忘了root密碼百度去orz。。)
3)show variables like ‘char%‘; 顯示編碼格式
下圖一為未修改my.ini配置文件的編碼文件latin1(即ISO-8859-1),圖二為已經修改過的。
圖一(未修改)
圖二(已修改編碼)
可以看出都已經更正為utf8了,這樣新建立的數據庫缺省就是UTF8編碼了
彩蛋:
然後你以為到這就完了麽,並沒有。。
接下來你會發現報這個錯如下所示。
上述錯誤是什麽引起的呢,還是因為編碼不正確啊!因為使用了已經創建好的數據庫和表但沒有更改為utf-8;
通過以下命令查看表的編碼為Latin1:
show create table tablename(數據庫名.表名);
修改方法:
ALTER DATABASE `數據庫` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE `數據表` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci (註:此句把表默認的字符集和所有字符列(CHAR,VARCHAR,TEXT)改為新的字符集:)
數據庫編碼的修改和查詢
總結:也就是要更改數據庫的默認字符集為utf8,更改表的字符集為utf8,更改列的字符集為utf8,然後重新啟動MYSQL服務;
最後大功告成!
附MySql表、字段、庫的字符集修改及查看方法的鏈接:http://www.jb51.net/article/68856.htm
向mysql插入表中的中文顯示為亂碼或問號的解決方法,親測有用!!