前言
這里我已經(jīng)將MySQL的數(shù)據(jù)庫編碼設(shè)置為UTF-8,所以下面現(xiàn)實(shí)的都是UTF-8授嘀。
設(shè)置MySQL數(shù)據(jù)庫的編碼方式有三種,分別是基于session會(huì)話的、基于全局gloable的姿染、永久性改變的。
正文
1.首先連接到MySQL : mysql -uroot -proot
2.輸入\s秒际,即可查看數(shù)據(jù)庫的字符編碼
3.查看數(shù)據(jù)庫的詳細(xì)編碼
輸入:show variables like '%char%';
4.新建一個(gè)數(shù)據(jù)庫查看數(shù)據(jù)庫編碼
create database test1;
show create database test1;
5.設(shè)置當(dāng)前窗口的數(shù)據(jù)庫字符編碼悬赏,即使基于會(huì)話session級(jí)別的,關(guān)閉此窗口娄徊,重新打開另外的窗口操作數(shù)據(jù)庫依然是原來的字符編碼
這里將utf-8設(shè)置為gbk:
set character_set_database=gbk;
set character_set_server=gbk;
? ?show variables like '%char%';
我們發(fā)現(xiàn)database和server都變成了gbk闽颇,然后我們?cè)僦匦聞?chuàng)建一個(gè)數(shù)據(jù)庫,查看其編碼寄锐,
create dabase test2;
show?create dabase test2;
我們發(fā)現(xiàn)數(shù)據(jù)庫編碼已經(jīng)變?yōu)間bk了兵多。
但是我們將此窗口關(guān)閉后,重新打開一個(gè)新的窗口來連接數(shù)據(jù)庫橄仆,重新查看數(shù)據(jù)庫的編碼剩膘,發(fā)現(xiàn)不是我們剛剛修改的gbk了,還是原來的utf-8盆顾。如圖:
因?yàn)槭腔跁?huì)話級(jí)別的改變編碼的方式援雇,當(dāng)重新新建一個(gè)窗口連接的時(shí)候,會(huì)話已經(jīng)改變椎扬,所以變?yōu)榱嗽瓉淼淖址幋a惫搏。
6.設(shè)置全局的數(shù)據(jù)庫字符編碼具温,即使基于整個(gè)MySQL服務(wù)的,當(dāng)重啟MySQL服務(wù)的時(shí)候筐赔,編碼依然會(huì)變?yōu)樵瓉淼淖址幋a
set global character_set_database=gbk;
set global character_ser_server=gbk;
show variables like '%char%';
我們發(fā)現(xiàn)數(shù)據(jù)庫的編碼沒有修改成功铣猩,還是原來的utf-8。但是當(dāng)我們重新創(chuàng)建數(shù)據(jù)庫或者重新創(chuàng)建表的時(shí)候茴丰,編碼就會(huì)是我們所期望的gbk了达皿。
在本窗口的新建數(shù)據(jù)庫是肯定可以的,session級(jí)別的都可以贿肩,全局的肯定ok的峦椰。重點(diǎn)是在另一個(gè)窗口中的編碼現(xiàn)實(shí)的是什么,下面我們復(fù)制一個(gè)窗口汰规,新建數(shù)據(jù)庫汤功,來查看數(shù)據(jù)庫和表的編碼
create database test3;
show variables like '%char%';
我們發(fā)現(xiàn)這是沒有問題的。
但是我們重啟MySQL數(shù)據(jù)庫的時(shí)候溜哮,編碼又是回復(fù)為原來的utf-8了滔金。
7.設(shè)置永久的字符編碼,即需要在配置文件中修改數(shù)據(jù)庫的字符編碼
編輯 /etc/my.cnf茂嗓,
? 在里面加入餐茵,已經(jīng)有[XXX]的,在里面直接加入即可述吸。?
[mysqld]
character-set-server=utf8?
[client]
default-character-set=utf8?
[mysql]
default-character-set=utf8
然后重啟數(shù)據(jù)庫即可忿族,service mysql restart.