前言
這裡我已經将MySQL的資料庫編碼設定為UTF-8,是以下面現實的都是UTF-8。
設定MySQL資料庫的編碼方式有三種,分别是基于session會話的、基于全局gloable的、永久性改變的。
正文
1.首先連接配接到MySQL : mysql -uroot -proot
2.輸入\s,即可檢視資料庫的字元編碼
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuUTYjBjY0EDOzUWO3QmZ4MWNjFzYihzNjZmNxMjZjZjZfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
3.檢視資料庫的詳細編碼
輸入:show variables like '%char%';
4.建立一個資料庫檢視資料庫編碼
create database test1;
show create database test1;
5.設定目前視窗的資料庫字元編碼,即使基于會話session級别的,關閉此視窗,重新打開另外的視窗操作資料庫依然是原來的字元編碼
這裡将utf-8設定為gbk:
set character_set_database=gbk;
set character_set_server=gbk;
show variables like '%char%';
我們發現database和server都變成了gbk,然後我們再重新建立一個資料庫,檢視其編碼,
create dabase test2;
show create dabase test2;
我們發現資料庫編碼已經變為gbk了。
但是我們将此視窗關閉後,重新打開一個新的視窗來連接配接資料庫,重新檢視資料庫的編碼,發現不是我們剛剛修改的gbk了,還是原來的utf-8。如圖:
因為是基于會話級别的改變編碼的方式,當重新建立一個視窗連接配接的時候,會話已經改變,是以變為了原來的字元編碼。
6.設定全局的資料庫字元編碼,即使基于整個MySQL服務的,當重新開機MySQL服務的時候,編碼依然會變為原來的字元編碼
set global character_set_database=gbk;
set global character_ser_server=gbk;
show variables like '%char%';
我們發現資料庫的編碼沒有修改成功,還是原來的utf-8。但是當我們重新建立資料庫或者重新建立表的時候,編碼就會是我們所期望的gbk了。
在本視窗的建立資料庫是肯定可以的,session級别的都可以,全局的肯定ok的。重點是在另一個視窗中的編碼現實的是什麼,下面我們複制一個視窗,建立資料庫,來檢視資料庫和表的編碼
create database test3;
我們發現這是沒有問題的。
但是我們重新開機MySQL資料庫的時候,編碼又是回複為原來的utf-8了。
7.設定永久的字元編碼,即需要在配置檔案中修改資料庫的字元編碼
編輯 /etc/my.cnf,
在裡面加入,已經有[XXX]的,在裡面直接加入即可。
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
然後重新開機資料庫即可,service mysql restart.