设置MySQL的字符编码
前言
這里我已經(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.
?
總結(jié)
以上是生活随笔為你收集整理的设置MySQL的字符编码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: subList生成的列表和原列表的对比
- 下一篇: Oracle Q-quote delim