MySQL字符集相關概念,以及應用,查看系統保存的三種關係處理字符集

MySQL字符集相關概念

字符編碼概念

字符(Character)是各種文字和符號的總稱,包括各種國家文字,標點符號,圖形符號,數字等。
在計算機當中所看到的任何內容都是字符構成的。
字符編碼(Character code)是計算機針對各種符號,在計算機中的一種二進制存儲代號。

字符集

字符集(Character set)是多個字符的集合,字符集種類較多,每個字符集都包含的字符個數不同。
常見字符集名稱:ASCII字符集GB2312字符集,BIG5字符集、GB18030字符集、Unicode字符集等。
計算機要準確的處理各種字符集文字,需要進行字符編碼,以便計算機能狗識別和存儲各種文字。
中文文字字數數目大,而且還分爲簡體中文和繁體中文兩種不同書寫規則的文字,而且計算機最初是按照英文單詞字節字符設計的,因此,對中文字符進行編碼,是中文信息交流的技術基礎。

設置客戶端所有字符集

如果直接通過cmd下的mysql.exe進行中文數據的插入,那麼可能會出錯

-- 插入中文數據   會報錯
insert into my_teacher values("張三",34);

在這裏插入圖片描述
這裏出錯原因:
1、用戶是通過mysql.exe來操作mysqld.exe
2、真正的sql執行的是mysqld.exe來執行sql指令
3、mysql.exe將數據傳入mysqld.exe的時候沒有告知其對應的符號規則(字符集),而mysqld也沒有能力自己判斷,就會使用自己(默認的字符集)

解決方案:mysql.exe客戶端在進行數據操作之前將自己所使用的字符集告訴mysqld.exe
cmd下的mysql.exe默認都只有一個字符集:GBK
在這裏插入圖片描述
mysql.exe如何告知mysql.exe對應的字符集類型爲GBK?
快捷方式:set names 字符集

-- mysql.exe告知我們的mysqld.exe自己的字符集的規則
set names gbk;

在這裏插入圖片描述
重新進行數據插入:中文(GBK)
在這裏插入圖片描述
深層原理:客戶端,服務器,連接層(show variables like 'character_set_%'
mysql.exe與mysqld.exe之間的處理關係一共分爲三層

客戶端傳入數據給服務端:client:character_set_client;
服務端返回數據給客戶端:server:character_set_results;
客戶端與服務端之間的連接:conection:character_set_connection;

set names 字符集;的本質就是:一次打通三層關係的字符集,變得一致
在系統當中有三個變量來記錄着這三個變量記錄的字符集:show variables like 'character_set_%'

-- 查看系統保存的三種關係處理字符集
show variables like 'character_set%';

在這裏插入圖片描述
查看一個新的客戶端的對應的字符集關係
在這裏插入圖片描述
修改客戶端給服務器端變量的字符集設置

set 變量名 = 值;
-- 修改變量set character_set_client = gbk;

在這裏插入圖片描述
再次查看修改過後值

show variables like 'character_set%';

重新進入數據插入和查看的結果:插入OK,但是查看亂碼。
在這裏插入圖片描述
修改結構字符集爲gbk

set character_set_results = gbk;

在這裏插入圖片描述
注意上面的connection只是爲了更方便客戶端與服務端進行字符集轉換而設置的
set names gbk;等價於這幾件事情

set character_set_client = gbk;  --爲了讓服務器識別客戶端傳回來的數據
set character_set_connection = gbk;//更好的幫助客戶端與服務端之間字符集的轉換
set character_set_results = gbk; --爲了告訴客戶端服務端所返回的數據字符集
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章