av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL 編碼utf8 與 utf8mb4 utf8mb4_unicode_ci 與 utf8mb4_general_ci

瀏覽:180日期:2023-10-15 08:27:11

參考: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史遺留問題,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 開始,MySQL 開始用 utf8mb4 編碼來實(shí)現(xiàn)完整的 UTF-8,其中 mb4 表示 most bytes 4,最多占用4個(gè)字節(jié)。從 8.0 之后,將會(huì)在某個(gè)版本開始用 utf8mb4 作為默認(rèn)字符編碼。

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

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

編輯 MySQL 的配置文件

只需要關(guān)心5個(gè)系統(tǒng)變量,這5個(gè)都改為 utf8mb4 則修改成功:character_set_clientcharacter_set_connectioncharacter_set_resultscharacter_set_servercharacter_set_database

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

vi /etc/my.cnf

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

[mysqld]init_connect=’SET collation_connection = utf8mb4_unicode_ci’ init_connect=’SET NAMES utf8mb4’ character-set-server=utf8mb4collation-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/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidcharacter-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ù)淖址痗haracter_set_database:默認(rèn)數(shù)據(jù)庫的字符集,無論默認(rèn)數(shù)據(jù)庫如何改變,都是這個(gè)字符集;如果沒有默認(rèn)數(shù)據(jù)庫,那就使用 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ù)庫服務(wù)器的默認(rèn)字符集character_set_system:存儲(chǔ)系統(tǒng)元數(shù)據(jù)的字符集,總是 utf8,不需要設(shè)置

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

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

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

排序字符集 collation

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

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

uft8mb4 表示用 UTF-8 編碼方案,每個(gè)字符最多占4個(gè)字節(jié)。 0900 指的是 Unicode 校對(duì)算法版本。(Unicode歸類算法是用于比較符合Unicode標(biāo)準(zhǔn)要求的兩個(gè)Unicode字符串的方法)。 ai指的是口音不敏感。也就是說,排序時(shí)e,è,é,ê和ë之間沒有區(qū)別。 ci表示不區(qū)分大小寫。也就是說,排序時(shí)p和P之間沒有區(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ǔ)基本多語言平面之外的字符。現(xiàn)在可以默認(rèn)存儲(chǔ)表情符號(hào)。如果需要重音靈敏度和區(qū)分大小寫,則可以使用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)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 成人高清视频在线观看 | 日日干日日操 | 人人做人人澡人人爽欧美 | 天天干天天操天天射 | 99re热这里只有精品视频 | 天天操天天拍 | 成人精品视频在线观看 | 久久国产精99精产国高潮 | 亚洲一区二区久久久 | 日韩视频在线播放 | 91av入口| 欧美性一区二区三区 | 日本手机在线 | 久久久久精 | 国产精品久久久久一区二区三区 | 午夜欧美 | 日本高清视频在线播放 | 自拍偷拍3p | 欧美一级大片免费观看 | 日本黄色免费视频 | 在线免费黄色 | 超碰免费在线观看 | 久久精品二区 | 精品国产91久久久久久 | 亚洲精品视频在线看 | 一区二区在线视频 | 欧美日韩在线一区 | 毛片网站免费观看 | av香港经典三级级 在线 | 精品国偷自产在线 | 免费一区二区 | 91成人免费观看 | 日韩国产三区 | 久久久久中文字幕 | 国产精品91视频 | 99精品视频一区二区三区 | 色接久久| 91视频国产精品 | 玖玖综合网 | 精品欧美一区二区三区 | 成人av观看|