亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL 編碼utf8 與 utf8mb4 utf8mb4_unicode_ci 與 utf8mb4_general_ci

 更新時間:2020年05月15日 12:02:49   作者:kikajack  
這篇文章主要介紹了MySQL 編碼utf8 與 utf8mb4 utf8mb4_unicode_ci 與 utf8mb4_general_ci的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

參考:mysql字符集小結(jié)

utf8mb4 已成為 MySQL 8.0 的默認字符集,在MySQL 8.0.1及更高版本中將 utf8mb4_0900_ai_ci 作為默認排序規(guī)則。

新項目只考慮 utf8mb4

UTF-8 編碼是一種變長的編碼機制,可以用1~4個字節(jié)存儲字符。

因為歷史遺留問題,MySQL 中的 utf8 編碼并不是真正的 UTF-8,而是閹割版的,最長只有3個字節(jié)。當遇到占4個字節(jié)的 UTF-8 編碼,例如 emoji 字符或者復雜的漢字,會導致存儲異常。

從 5.5.3 開始,MySQL 開始用 utf8mb4 編碼來實現(xiàn)完整的 UTF-8,其中 mb4 表示 most bytes 4,最多占用4個字節(jié)。從 8.0 之后,將會在某個版本開始用 utf8mb4 作為默認字符編碼。

設置服務器默認字符集為 utf8mb4

創(chuàng)建數(shù)據(jù)庫時,如果沒有指定字符集,會采用服務器的默認字符集。設置服務器默認字符集為 utf8mb4 可以提高便利性。

編輯 MySQL 的配置文件

只需要關心5個系統(tǒng)變量,這5個都改為 utf8mb4 則修改成功:
character_set_client
character_set_connection
character_set_results
character_set_server
character_set_database

my.cnf 是MySQL 的配置文件,修改之前記得先備份:

vi /etc/my.cnf

在[mysqld]下面加上default-character-set=utf8后服務器啟動不了,莫名其妙。后來這么改就好了(MySQL5.7):

[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci' 
init_connect='SET NAMES utf8mb4' 
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci 
skip-character-set-client-handshake
...
[client]
default-character-set=utf8mb4

MySQL8.0 默認已經(jīng)是 utf8mb4,不用改懂。如果你要改的話,配置文件如下:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server = utf8mb4
[client]
default-character-set=utf8mb4

重啟并確認

可以看到,系統(tǒng)編碼、連接編碼、服務器和客戶端編碼都設置為 UTF-8了:

mysql> show variables like "%char%";
+--------------------------------------+--------------------------------+
| Variable_name            | Value             |
+--------------------------------------+--------------------------------+
| character_set_client         | utf8mb4            |
| character_set_connection       | utf8mb4            |
| character_set_database        | utf8mb4            |
| character_set_filesystem       | binary             |
| character_set_results        | utf8mb4            |
| character_set_server         | utf8mb4            |
| character_set_system         | utf8              |
| character_sets_dir          | /usr/share/mysql-8.0/charsets/ |
| validate_password.special_char_count | 1               |
+--------------------------------------+--------------------------------+
9 rows in set (0.00 sec)

MySQL 中字符集相關變量

character_set_client:客戶端請求數(shù)據(jù)的字符集
character_set_connection:從客戶端接收到數(shù)據(jù),然后傳輸?shù)淖址?br /> character_set_database:默認數(shù)據(jù)庫的字符集,無論默認數(shù)據(jù)庫如何改變,都是這個字符集;如果沒有默認數(shù)據(jù)庫,那就使用 character_set_server指定的字符集,這個變量建議由系統(tǒng)自己管理,不要人為定義。
character_set_filesystem:把操作系統(tǒng)上的文件名轉(zhuǎn)化成此字符集,即把 character_set_client轉(zhuǎn)換character_set_filesystem, 默認binary是不做任何轉(zhuǎn)換的
character_set_results:結(jié)果集的字符集
character_set_server:數(shù)據(jù)庫服務器的默認字符集
character_set_system:存儲系統(tǒng)元數(shù)據(jù)的字符集,總是 utf8,不需要設置

創(chuàng)建數(shù)據(jù)庫時指定字符集為 utf8mb4

如果數(shù)據(jù)庫默認字符集不是 utf8mb4,那么可以在創(chuàng)建數(shù)據(jù)庫時指定字符集:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

排序字符集 collation

字符除了需要存儲,還需要排序或比較大小。推薦用 utf8mb4_unicode_ci,但是用 utf8mb4_general_ci 也沒啥問題。

MySQL 8.0 默認的是 utf8mb4_0900_ai_ci,屬于 utf8mb4_unicode_ci 中的一種,具體含義如下:

  • uft8mb4 表示用 UTF-8 編碼方案,每個字符最多占4個字節(jié)。
  • 0900 指的是 Unicode 校對算法版本。(Unicode歸類算法是用于比較符合Unicode標準要求的兩個Unicode字符串的方法)。
  • ai指的是口音不敏感。也就是說,排序時e,è,é,ê和ë之間沒有區(qū)別。
  • ci表示不區(qū)分大小寫。也就是說,排序時p和P之間沒有區(qū)別。

utf8mb4 已成為默認字符集,在MySQL 8.0.1及更高版本中將utf8mb4_0900_ai_ci作為默認排序規(guī)則。以前,utf8mb4_general_ci是默認排序規(guī)則。由于utf8mb4_0900_ai_ci排序規(guī)則現(xiàn)在是默認排序規(guī)則,因此默認情況下新表格可以存儲基本多語言平面之外的字符?,F(xiàn)在可以默認存儲表情符號。如果需要重音靈敏度和區(qū)分大小寫,則可以使用utf8mb4_0900_as_cs代替。

總結(jié)

到此這篇關于MySQL 編碼utf8 與 utf8mb4 utf8mb4_unicode_ci 與 utf8mb4_general_ci的文章就介紹到這了,更多相關mysql 編碼 utf8 與 utf8mb4內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解MySQL與Spring的自動提交(autocommit)

    詳解MySQL與Spring的自動提交(autocommit)

    這篇文章主要介紹了MySQL與Spring的自動提交(autocommit)的的相關資料,幫助大家更好的理解和使用MySQL與spring,感興趣的朋友可以了解下
    2021-01-01
  • Linux/UNIX和Window平臺上安裝Mysql

    Linux/UNIX和Window平臺上安裝Mysql

    這篇文章主要為大家詳細介紹了Linux/UNIX和Window兩個系統(tǒng)上采用命令安裝Mysql的方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • MySQL 8.0 新特性之檢查約束的實現(xiàn)

    MySQL 8.0 新特性之檢查約束的實現(xiàn)

    這篇文章主要介紹了MySQL 8.0 新特性之檢查約束的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • MySQL事務隔離機制詳解

    MySQL事務隔離機制詳解

    在數(shù)據(jù)庫中,事務是指一組邏輯操作,這些操作要么全部執(zhí)行,要么全部不執(zhí)行,是一個不可分割的工作單位,這篇文章主要介紹了MySQL事務隔離機制,需要的朋友可以參考下
    2022-11-11
  • mysql 5.7.18 zip版安裝使用教程

    mysql 5.7.18 zip版安裝使用教程

    這篇文章主要為大家詳細介紹了mysql 5.7.18 zip版安裝使用教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • 深入了解Mysql邏輯架構(gòu)

    深入了解Mysql邏輯架構(gòu)

    這篇文章主要介紹了深入了解Mysql邏輯架構(gòu)的原因,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-12-12
  • mysql中日期的加減 date_add()、date_sub() 函數(shù)及用法小結(jié)

    mysql中日期的加減 date_add()、date_sub() 函數(shù)及用法小結(jié)

    在Mysql中,date_add與date_sub分別是指對于日期的一個加減操作,date_add是指從日期中加上指定的時間間隔,date_sub是指從日期中減去指定的時間間隔,本文通過實例講解mysql中日期的加減 date_add()、date_sub() 函數(shù)及用法小結(jié),感興趣的朋友一起看看吧
    2023-11-11
  • mysql觸發(fā)器一個表改變另一個表也改變問題

    mysql觸發(fā)器一個表改變另一個表也改變問題

    這篇文章主要介紹了mysql觸發(fā)器一個表改變另一個表也改變問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • mysql 8.0.15 下載安裝詳細教程 新手必備!

    mysql 8.0.15 下載安裝詳細教程 新手必備!

    這篇文章主要為大家詳細介紹了mysql 8.0.15 下載安裝詳細教程,純新手教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • MySQL 5.5.49 大內(nèi)存優(yōu)化配置文件優(yōu)化詳解

    MySQL 5.5.49 大內(nèi)存優(yōu)化配置文件優(yōu)化詳解

    最近mysql服務器升級到了MySQL 5.5.49版本,性能比mysql 5.0.**肯定效率高了不少,但mysql的默認配置文件不合理,這里是針對大內(nèi)存訪問量大的機器的配置方案,需要的朋友可以參考下
    2016-05-05

最新評論