標籤:中文亂碼 mysql 字元集設定 utf8
最近項目使用到mysql,卻突然出現了中文亂碼問題,嘗試了多種方案,終於解決亂碼問題,總結一下解決方案,給遇到相同問題的人一點參考。
中文亂碼的原因
1.安裝mysqlserver的時候編碼集設定有問題
2.建立資料庫的時候編碼集設定有問題
3.建立表的時候編碼集設定有問題
4.用戶端的編碼集設定有問題
可以通過命令查看編碼集:
show variables like "%char%";
常用編碼集
1.java中的常用編碼UTF-8;GBK;GB2312;ISO-8859-1;
2.對應mysql資料庫中的編碼utf8;gbk;gb2312;latin1
建議使用utf8格式,utf8可以相容世界上所有字元
mysql編碼集設定命令
注意:如果不是通過my.ini設定檔設定的內容,只在目前狀態下有效,當重啟資料庫服務後失效。所以如果想要不出現亂碼只有修改my.ini檔案,資料庫編碼可以在建立資料庫時候指定UTF8
mysql設定編碼命令SET character_set_client = utf8;SET character_set_connection = utf8;SET character_set_database = utf8;SET character_set_results = utf8;SET character_set_server = utf8;SET collation_connection = utf8_bin;SET collation_database = utf8_bin;SET collation_server = utf8_bin;
設定mysqlserver編碼
設定mysqlserver的編碼,需要重新安裝mysql服務,過程如下:
1.開啟命令提示字元(管理員),如果不以管理員身份運行可能會出現錯誤
2.進入mysql安裝目錄下的bin目錄
3.關閉服務
net stop mysql
4.卸載
mysqld -remove
5.修改mysql的設定檔,在mysql安裝目錄下找到my.ini檔案
修改設定檔,在設定檔中加入
character-set-server=utf8
貼出我的設定檔
[mysqld]#設定字元集character-set-server=utf8 #這裡把路徑改改為你的mysql安裝目錄basedir=D:\develeper\mysql5.6 datadir=D:\develeper\mysql5.6\datasql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
我的設定檔:http://pan.baidu.com/s/1qW3hqri
6.安裝
mysqld -install
7.啟動服務
net start mysql
建立時指定字元集
1.建立資料庫時設定字元集
create database testdb default character set utf8;#建立資料庫
2.建立表時設定字元集
use testdb;create table student( id char(50) primary key, sname varchar(100) not null, age int )engine=innodb default charset=utf8;
3、用戶端字元集的設定,通過連接字串來設定。
jdbc:mysql://localhost:3306/testdb?characterEncoding=utf8
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
mysql中文亂碼解決方案