最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 編碼utf8 與 utf8mb4 utf8mb4_unicode_ci 與 utf8mb4_general_ci

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

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

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

新項(xiàng)目只考慮 utf8mb4

UTF-8 編碼是一種變長(zhǎng)的編碼機(jī)制,可以用1~4個(gè)字節(jié)存儲(chǔ)字符。

因?yàn)闅v史遺留問(wèn)題,MySQL 中的 utf8 編碼并不是真正的 UTF-8,而是閹割版的,最長(zhǎng)只有3個(gè)字節(jié)。當(dāng)遇到占4個(gè)字節(jié)的 UTF-8 編碼,例如 emoji 字符或者復(fù)雜的漢字,會(huì)導(dǎo)致存儲(chǔ)異常。

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

設(shè)置服務(wù)器默認(rèn)字符集為 utf8mb4

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

編輯 MySQL 的配置文件

只需要關(guān)心5個(gè)系統(tǒng)變量,這5個(gè)都改為 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后服務(wù)器啟動(dòng)不了,莫名其妙。后來(lái)這么改就好了(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 默認(rèn)已經(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

重啟并確認(rèn)

可以看到,系統(tǒng)編碼、連接編碼、服務(wù)器和客戶端編碼都設(shè)置為 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 中字符集相關(guān)變量

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

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

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

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

排序字符集 collation

字符除了需要存儲(chǔ),還需要排序或比較大小。推薦用 utf8mb4_unicode_ci,但是用 utf8mb4_general_ci 也沒(méi)啥問(wèn)題。

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

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

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

總結(jié)

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

相關(guān)文章

  • MySQL5.7免安裝版配置圖文教程

    MySQL5.7免安裝版配置圖文教程

    Mysql是一個(gè)比較流行且很好用的一款數(shù)據(jù)庫(kù)軟件,如下記錄了我學(xué)習(xí)總結(jié)的mysql免安裝版的配置經(jīng)驗(yàn),感興趣的的朋友參考下吧
    2017-09-09
  • MySQL表的CURD使用

    MySQL表的CURD使用

    文章主要介紹了MySQL數(shù)據(jù)庫(kù)操作的基本方法,包括創(chuàng)建表、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)等,涵蓋了表結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)插入、查詢條件、排序、分頁(yè)、更新和刪除操作,以及聚合函數(shù)和GROUP BY子句的使用
    2025-02-02
  • MySQL產(chǎn)生隨機(jī)數(shù)并連接字符串的方法示例

    MySQL產(chǎn)生隨機(jī)數(shù)并連接字符串的方法示例

    這篇文章主要介紹了MySQL產(chǎn)生隨機(jī)數(shù)并連接字符串的方法,簡(jiǎn)單分析了相關(guān)函數(shù),并結(jié)合實(shí)例形式給出了相應(yīng)的SQL語(yǔ)句實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-05-05
  • MySQL處理重復(fù)數(shù)據(jù)的學(xué)習(xí)筆記

    MySQL處理重復(fù)數(shù)據(jù)的學(xué)習(xí)筆記

    在本篇文章里小編給大家分享的是一篇關(guān)于MySQL處理重復(fù)數(shù)據(jù)的學(xué)習(xí)筆記,需要的朋友們可以參考下。
    2020-03-03
  • 在centOS 7安裝mysql 5.7的詳細(xì)教程

    在centOS 7安裝mysql 5.7的詳細(xì)教程

    這篇文章主要介紹了在centOS 7安裝mysql 5.7的詳細(xì)教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2016-12-12
  • Mysql中使用sql語(yǔ)句生成雪花算法Id

    Mysql中使用sql語(yǔ)句生成雪花算法Id

    雪花算法是一種生成全局唯一ID的分布式算法,本文主要介紹了Mysql中使用sql語(yǔ)句生成雪花算法Id,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • 詳解MySQL 表中非主鍵列溢出情況監(jiān)控

    詳解MySQL 表中非主鍵列溢出情況監(jiān)控

    這篇文章主要介紹了詳解MySQL 表中非主鍵列溢出情況監(jiān)控,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Mysql8.0修改配置文件my.ini的坑及解決

    Mysql8.0修改配置文件my.ini的坑及解決

    使用記事本直接編輯my.ini文件保存后,可能會(huì)導(dǎo)致MySQL無(wú)法啟動(dòng),因?yàn)镸ySQL會(huì)以ANSI編碼讀取該文件,解決方法是使用Notepad++打開(kāi)my.ini文件,選擇ANSI編碼保存
    2025-01-01
  • 數(shù)據(jù)庫(kù)中的sql完整性約束語(yǔ)句解析

    數(shù)據(jù)庫(kù)中的sql完整性約束語(yǔ)句解析

    這篇文章主要介紹了數(shù)據(jù)庫(kù)中的sql完整性約束語(yǔ)句解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 淺談mysql的timestamp存在的時(shí)區(qū)問(wèn)題

    淺談mysql的timestamp存在的時(shí)區(qū)問(wèn)題

    本文主要介紹了淺談mysql的timestamp存在的時(shí)區(qū)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論

盐池县| 大竹县| 嘉兴市| 延边| 镇远县| 玉林市| 彭水| 无为县| 平凉市| 仙桃市| 深水埗区| 曲阜市| 育儿| 夹江县| 昭觉县| 南投市| 武义县| 信丰县| 安图县| 虹口区| 鄂托克前旗| 沙田区| 宝坻区| 镇江市| 凌源市| 清苑县| 策勒县| 河北省| 巧家县| 化州市| 光山县| 鹤壁市| 虹口区| 秀山| 昭觉县| 普兰县| 周口市| 闽清县| 额尔古纳市| 吉林市| 施甸县|