最近兩天做項目總是被亂碼問題困擾著,這不剛把mysql中文亂碼問題解決了,下面小編把我的解決方案分享給大家,供大家參考,也方便以后自己查閱。
首先:
用show variables like “%colla%”;show varables like “%char%”;這兩條命令查看數據庫與服務端的字符集設置
如果查看出來都是gbk2312,或 gbk,那么就只能支持簡體中文,繁體和一些特殊符號是不能插入的,我們只有修改字符集為UTF-8,
修改方法如下:
用記事本或UitraEdit打開mysql數據庫安裝目錄下的my.ini文件打開, 然后Ctrl+F搜索default-character-set,將后面的字符集修改為UTF8,注意要修改兩個地方,一個事客戶端的,一個是服務端的。
然后保存,重啟mysql服務、、進去繼續用show variables like “%colla%”;show varables like “%char%”;著兩條語句查詢一下字符集。 如圖:

到此就配置完成了。
注意:
如果以前建有數據庫沒有刪除的 請用 show database 數據庫名;和 show create table 表名;查看一下數據庫和表的字符集是否為UTF8 , 因為修改my.ini文件,它不能修改原來數據庫的的字符集。在命令行下面可以用
alter database 數據庫名 character set “字符集”; 命令來修改數據庫字符集
還有一點要注意的是,修改為UTF8以后,在命令行下面中文是亂碼的,只輸出到頁面或控制臺是正常的,這個問題我也上網查了一下,貌似命令行下面不支持UTF8,我也不太清楚。
當修改以后,在命令行下面如果要插入中文,可以在插入語句之前執行,set names gbk2312;就可以插入中文了,但是不能插入繁體和一些特殊符號。
以上就是這幾天解決亂碼的成果。希望各位大蝦多多指教。
下面抽點空給大家整理些關于MySQL會出現中文亂碼的原因不外乎下列幾點。
1.server本身設定問題,例如還停留在latin1
2.table的語系設定問題(包含character與collation)
3.客戶端程式(例如php)的連線語系設定問題
強烈建議使用utf8!!!!
utf8可以兼容世界上所有字符!!!!
一、避免創建數據庫及表出現中文亂碼和查看編碼方法
1、創建數據庫的時候:
| CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; |
2、建表的時候
| CREATE TABLE `database_user` ( `ID` varchar(40) NOT NULL default '', `UserID` varchar(40) NOT NULL default '', ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
這3個設置好了,基本就不會出問題了,即建庫和建表時都使用相同的編碼格式。
新聞熱點
疑難解答