MySQL字符集是什麼?字符集的相關介紹

青灯夜游
發布: 2018-10-17 17:30:12
轉載
4972 人瀏覽過

本文帶給大家MySQL字符集是什麼?字符集的相關介紹。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有幫助。

字元集介紹

  • #gbk/gb2312

    #gbk/gb2312
    採用雙位元組字元集,不論中、英文字元皆使用雙字元來表示,為了區分中文,將其最高位元都設定成1
    gb2312是gbk的子集,gbk是gb18030的子集,gb2312只能儲存簡體中文字元
    gbk包含中日韓字元的大字元集
    通常使用gbk字元集足夠
    國際通用性比utf8差,不過utf8佔用的資料庫比gbk大(utf8是三位元組字元集)

  • utf8/utf8mb4

    UTF全名(Unicode Transformation Format),是Unicode的一種儲存方式,可變長度字元編碼,又稱萬國碼;
    資料庫字元集盡量使用utf8(包括connect、result、及最終html頁面都必須要求一致為utf8);
    UTF8使用可變長度位元組來存儲Unicode字符,例如ASCII字母繼續使用1個字節存儲,重音文字、希臘字母、或西里爾字母等使用2個字節來存儲,而常用的漢字就要用3個位元組;也就是一個英文字元等於一個位元組,一個中文(含繁體)等於三個位元組。
    utf8mb4一個字元最多能存4字節,所以能支援更多的字元集;專案中常用utf8mb4存放emoji表情;
    latin1是8bit (1 bytes)字元集,但不能覆蓋亞洲、非洲語言;
    unidoce是latin1的擴展,增加了亞洲、非洲常規語言支持,但仍不支持全部語言,且ASCII用unidoce來表示效率不高(小字符集轉換成大字符集,往往便隨的就是字元的遺失);
    utf8是unicode的擴充;
    gbk、gb2312等字元集與utf8之間都必須透過Unicode編碼才能相互轉換。

字元集使用建議

#1、非常肯定只有中文終端使用者時,可選擇gbk / gb2312

2、為了方便資料遷移、以及多種終端展示,最好是utf8

3、字元無需區分大小寫時,採用預設的xx_ci校驗集可以,否則選擇xx_bin校驗集(生產環境中,盡量不要修改校驗集)

4、預設字元集是latin1,該字元集存放漢字是分開存放,以至於檢索結果時不夠精確,好處就是節省空間,不建議使用

MySQL字元集範圍

#伺服器層(server) > 資料庫成(database) > ; 資料表(table) > 欄位(column) > 連接(connection) | 結果集(result)

MySQL字元集優先權


連接(connection) | 結果集(result) > 欄位(column) > 資料表(table) > 資料庫成(database) > 伺服器層(server)

char型別

char(N):N代表的是字元數(也叫字元長度)、而非bytes# char(N):是固定長存儲,佔用定長的存儲空間,不足的部分用空格填充;MySQL處理char(N)類型時,需要將空格strip掉後return。 儲存空間:char(N)類型的儲存空間和字元集有關係,結合剛才字元集的知識點,一個中文在utf8字元集中佔用3個bytes、gbk佔用2個bytes、數字和字符統一用一個字元表示。

儲存機制:在不夠N​​長度時,MySQL在儲存資料時,需要用填滿特殊的空格,而非十六進位的20


思考:

char(30 ),在不同的字元集中最多能存放多少個字母、漢字,以及佔用空間狀況

gbk: 可以存放30個位元組佔用的空間30*2utf8:可以存放30個位元組佔用的空間30*3

#########varcahr類型############varchar(N):N代表的是字元個數(也叫字元長度)、而非bytes## #varchar(N):是變長儲存,僅使用必要的儲存空間.######儲存空間:varchar(N)類型的儲存空間和字元集有關係,結合剛才字元集的知識點,一個中文在utf8字元集中佔用3個bytes、gbk統一佔用2個bytes、數字和字元一個字元表示。 ###

儲存機制:varchar(N)欄位儲存實際上是從第二個位元組開始儲存,然後用1到2個位元組表示實際長度,剩下的才是可以儲存資料的範圍,因此最大可用存儲範圍是65535-3=65532位元組;第一個位元組標識是否為空.(長度小於255位元組,使用一個位元組來表示長度;大於255位元組使用兩個位元組來表示長度)

修改資料庫實例字元集

暫時生效

mysql> set character_set = 'gbk';
mysql> set character_set_client = 'gbk';
登入後複製

全域生效

mysql> set global character_set_client = 'gbk';
Query OK, 0 rows affected (0.00 sec)
登入後複製

永遠生效

vim /etc/my.cnf 
character-set-server=utf8
登入後複製

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多相關教學請造訪mysql資料庫圖文教學 MySQL影片教學bootstrap影片教學

以上是MySQL字符集是什麼?字符集的相關介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板