開發者學堂課程【SQL進階及查詢練習:Mysql編碼】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址: https://developer.aliyun.com/learning/course/36
Mysql編碼
内容簡介:
一 :檢視mysql資料庫編碼
二: 編碼解釋
三: 控制台亂碼問題
四: 指定預設編碼
1.檢視mysql資料庫編碼
*SHOW VARIABLES LIKE"char:
2.編碼解釋
*character set client :Mysql使用該編碼來解讀用戶端發送過來的資料,例如該碼為UTF8,那麼如果用戶端發送過來的資料不是utf8,那麼就會出現亂碼
*character set result:Mysql會把資料轉換成該編碼後,再發送給用戶端,例如該編碼為UTF8,那麼如果用戶端不使用UTF來解讀,那麼就會出現亂碼。其它編碼隻要支援中文即可,也就是說不能使用latin1。
3.控制台亂碼問題
*插入或修改時出現亂碼:
>這是因為cmd預設模式下使用GBK,而character set client不是GBK的原因。我們隻需讓這兩個編碼相同即可。
*查詢出的資料為亂碼:
>這是因為character set results不是GBK,而cmd預設使用GBK的原因。我們隻需讓這兩個編碼相同即可。
>因為修改cmd的編碼不友善,是以我們去設定character set result:為GBK即可。
*設定變量的語句:
>set character set clsent-gbk:
> set character set clsent-gbk:
注意,設定變量隻對目前連接配接有效,當退出視窗後,再次登入mysql,還需再次設定變量。為了一勞永逸,可以在my.ini中設定:
設定default-chararcter-set=gbk即可。
4. 指定預設編碼
我們在安裝mysql 時已經指定了預設編碼為utf8,是以我們在建立資料庫、建立表時都無需再次制定編碼。
為了一勞永逸,可以在my.ini中設定:
設定charaster-set-server=utf8即可。
Character set client | ->mysql把用戶端傳遞的資料都當成是utf8!一是他傳給utf8,二是如果我們傳遞的是x,那麼需要修改這個變量為eastes et. Datas.
Character set connection | utf8
Character set results | utf8 -->mysql發送給客戶的資料都是utf8的,一是客戶用utf8編碼,二是如果用戶端使用gbk來碼,那麼需要修改這個變量為
Character set serever | utf8
Character set system | utf8
Character setclient = utf8,,無論客戶發的是什麼的編碼的資料,mysql都當是utf8的資料。
>若用戶端發送的是GBK
>伺服器會當成是utf8對待
>總結:必然亂碼。
處理問題的手段有兩種:
>讓用戶端發送utf8的資料(行不通)
>把character_set_client修改為gbk
Set character_set_client =gbk;-->隻有在目前視窗内有效,是以關閉視窗後再打開,又回到utf8了。
Character_set_result = utf8 ,把資料用什麼編碼發送給用戶端。
>若伺服器發送給用戶端的是utf8的資料
>用戶端會把他當成gbk,因為小黑屏,隻能顯示gbk.
>總結:必然亂碼。
處理問題有兩種手段:
>讓伺服器發送gbk的資料
>讓小黑屏使用utf8來解讀(行不通)
My.in1
在總配置檔案中進行執行,可以一勞永逸
[client]
Port=3306
[mysql]
Default-character-set = gbk /* 它可以一勞永逸!它可以修改三個變量: client、
Result、connectio