真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL字符集都有哪些

今天就跟大家聊聊有關(guān)MySQL字符集都有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比青田網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式青田網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋青田地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴(lài)。

1. 字符集基礎(chǔ)

先了解下MySQL字符集都有哪些地方使用,進(jìn)入數(shù)據(jù)庫(kù)VARIABLES參數(shù)一目了然:

mysql> SHOW VARIABLES  WHERE variable_name LIKE '%character%'  OR  variable_name  LIKE '%collation%'  ; +-------------------------------+--------------------------------------+ | 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            | /opt/idc/mysql8.0.23/share/charsets/ | | collation_connection          | utf8mb4_bin                          | | collation_database            | utf8mb4_bin                          | | collation_server              | utf8mb4_bin                          | | default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci                   | +-------------------------------+--------------------------------------+

從上面client,connection,database,results層層環(huán)節(jié)扣著,任何一個(gè)環(huán)節(jié)的字符集不兼容都會(huì)出現(xiàn)亂碼問(wèn)題。

MySQL8.0 utf8mb4 Unicode字符集一個(gè)新的通用排序歸類(lèi),被命名為utf8mb4_0900_ai_ci。MySQL  8.0默認(rèn)的是utf8mb4_0900_ai_ci,屬于 utf8mb4_unicode_ci中的一種。

這些字段每個(gè)意義,代表著什么含義:

  • uft8mb4 表示用 UTF-8 編碼方案,每個(gè)字符最多占4個(gè)字節(jié)。

  • utf8mb3也是Unicode字符集的UTF-8編碼,每個(gè)字符使用一到三個(gè)字節(jié)。(utf8: utf8mb3的別名)

  • 0900 就是Unicode 校對(duì)算法版本。(Unicode歸類(lèi)算法是用于比較符合Unicode標(biāo)準(zhǔn)要求的兩個(gè)Unicode字符串的方法)。

  • ai指的是口音不敏感。也就是說(shuō),排序時(shí)e,è,é,ê和ë之間沒(méi)有區(qū)別,不區(qū)分重音。

  • ci表示不區(qū)分大小寫(xiě)。排序時(shí)p和P之間沒(méi)有區(qū)別。

再了解一下一些場(chǎng)景下 utf8 和 utf8mb4 的問(wèn)題點(diǎn):

utf8編碼最多支持3字節(jié)的數(shù)據(jù),而emoji表情符, 偏生字是4個(gè)字節(jié)的utf8無(wú)法存儲(chǔ)的,致辭延伸出utf8mb4字符集解決這個(gè)問(wèn)題。

日常常用的字符集:

  • utf8mb4_bin:將字符串每個(gè)字符用二進(jìn)制數(shù)據(jù)編譯存儲(chǔ),區(qū)分大小寫(xiě),而且可以存二進(jìn)制的內(nèi)

  • utf8mb4_general_ci:ci即case  insensitive,不區(qū)分大小寫(xiě)。沒(méi)有實(shí)現(xiàn)Unicode排序規(guī)則,在遇到某些特殊語(yǔ)言或字符集,排序結(jié)果可能不一致。但在絕大多數(shù)情況下,這些特殊字符的順序并不需要那么精確。

utf8mb4_unicode_ci:是基于標(biāo)準(zhǔn)的Unicode來(lái)排序和比較,能夠在各種語(yǔ)言之間精確排序,Unicode排序規(guī)則為了能夠處理特殊字符的情況,實(shí)現(xiàn)了略微復(fù)雜的排序算法。

2. 字符集配置

mysql字符集如何設(shè)置,更改操作:

1)my.cnf配置文件信息,建議初始化時(shí)就設(shè)置好。

[mysqld]

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

character-set-client-handshake = FALSE #此處是忽略客戶端的字符集,使用服務(wù)器的設(shè)置

2)init_connect=‘SET NAMES utf8mb4’ #服務(wù)器為每個(gè)連接的客戶端執(zhí)行的字符串,對(duì)于一些超級(jí)管理源就不生效的

3)字符集變更,包含庫(kù),表,column的變更。都可以完全的擁有自己的字符集。

##更改DATABASE  ALTER DATABASE `db1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci   ##更改TABLE  ALTER TABLE `t1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci   ##更改column字段  ALTER TABLE `t1`  modify `name` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '昵稱(chēng)';

4)日常字符集檢查工作:

SELECT b.SCHEMA_NAME, b.DEFAULT_CHARACTER_SET_NAME, b.DEFAULT_COLLATION_NAME ,a.TABLE_NAME, a.TABLE_COLLATION  FROM  information_schema.SCHEMATA b   left join information_schema.TABLES   a  on  b.SCHEMA_NAME =a. TABLE_SCHEMA  WHERE  b.SCHEMA_NAME not in ('information_schema' ,'mysql','performance_schema', 'sys')  ORDER BY TABLE_SCHEMA,TABLE_NAME ;

通過(guò)多方便設(shè)置,更改操作,檢查。字符集不再是隱藏問(wèn)題。

3. 字符集對(duì)于數(shù)據(jù)庫(kù)的影響

字符集對(duì)整個(gè)數(shù)據(jù)庫(kù)影響面還是比較可觀的。庫(kù)更改 對(duì)于原先存在的表字段 都不影響 依次類(lèi)推。所以數(shù)據(jù)庫(kù)>表>字段 都可以單獨(dú)設(shè)置字符集。

常見(jiàn)問(wèn)題1:有索引 沒(méi)有走 因?yàn)檫M(jìn)行了 字符集隱式轉(zhuǎn)換

MySQL字符集都有哪些

常見(jiàn)問(wèn)題2:在尾隨空格方面不同

字符串值(CHAR、VARCHAR和TEXT)的比較與其他排序規(guī)則在尾隨空格方面不同。For example, ‘a’ and 'a ’  作為不同的字符串比較,而不是相同的字符串。

MySQL字符集都有哪些

對(duì)于字符集排序來(lái)說(shuō),字符串末尾的空格也有對(duì)應(yīng)的處理。

mysql> SELECT COLLATION_NAME, PAD_ATTRIBUTE  FROM INFORMATION_SCHEMA.COLLATIONS   WHERE CHARACTER_SET_NAME = 'utf8mb4'; +----------------------------+---------------+ | COLLATION_NAME             | PAD_ATTRIBUTE | +----------------------------+---------------+ | utf8mb4_general_ci         | PAD SPACE     | | utf8mb4_bin                | PAD SPACE     | | utf8mb4_unicode_ci         | PAD SPACE     | | utf8mb4_icelandic_ci       | PAD SPACE     | | utf8mb4_latvian_ci         | PAD SPACE     | | ......... | utf8mb4_0900_ai_ci         | NO PAD        | | utf8mb4_de_pb_0900_ai_ci   | NO PAD        | | utf8mb4_0900_bin           | NO PAD        | +----------------------------+---------------+

注意:在選擇使用utf8mb4_0900 字符集之后空格 就需要處理。

常見(jiàn)問(wèn)題3:對(duì)于數(shù)據(jù)的大小寫(xiě)敏感

除了lower_case_table_names之外,怎樣有效使用大小寫(xiě)字符集設(shè)置,采用ut8mb4_bin字符集 既可,查詢和數(shù)據(jù)插入解決。

MySQL字符集都有哪些

常見(jiàn)問(wèn)題4:表情符,偏生字

常見(jiàn)錯(cuò)誤代碼:1366 Incorrect string value: ‘\xF0\x9F\x99\x82’ for column ‘name’ at  row 2

指定Utf8mb4字符集,再配合character-set-client-handshake屬性

MySQL字符集都有哪些

備注:對(duì)于jdbc來(lái)說(shuō)沒(méi)有utf8mb4這樣的字符集說(shuō)法。

看完上述內(nèi)容,你們對(duì)MySQL字符集都有哪些有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


當(dāng)前標(biāo)題:MySQL字符集都有哪些
鏈接URL:http://weahome.cn/article/ihhpih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部