国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

不可忽視的MySQL字符集

數據庫 MySQL
字符集是一組符號和編碼。collation是一組用于比較字符集中的字符的規則。MySQL的字符集從latin1經過utf8 到utf8mb4 ,算是經歷曲折的路線。特別是從使用一個字符集變更另一個字符集時,實踐當中都非常無奈,不是沒辦法,而是麻煩。

 MySQL的字符集從latin1經過utf8 到utf8mb4 ,算是經歷曲折的路線。特別是從使用一個字符集變更另一個字符集時,實踐當中都非常無奈,不是沒辦法,而是麻煩。到了MySQL8.0多出了一個字符集utf8mb4_0900_*的字符集,有必要了解一下。

[[389232]]

1. 字符集基礎

先了解下MySQL字符集都有哪些地方使用,進入數據庫VARIABLES參數一目了然:

 

  1. mysql> SHOW VARIABLES  WHERE variable_name LIKE '%character%'  OR  variable_name  LIKE '%collation%'  ; 
  2. +-------------------------------+--------------------------------------+ 
  3. | Variable_name                 | Value                                | 
  4. +-------------------------------+--------------------------------------+ 
  5. | character_set_client          | utf8mb4                              | 
  6. | character_set_connection      | utf8mb4                              | 
  7. | character_set_database        | utf8mb4                              | 
  8. | character_set_filesystem      | binary                               | 
  9. | character_set_results         | utf8mb4                              | 
  10. | character_set_server          | utf8mb4                              | 
  11. | character_set_system          | utf8                                 | 
  12. | character_sets_dir            | /opt/idc/mysql8.0.23/share/charsets/ | 
  13. | collation_connection          | utf8mb4_bin                          | 
  14. | collation_database            | utf8mb4_bin                          | 
  15. | collation_server              | utf8mb4_bin                          | 
  16. | default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci                   | 
  17. +-------------------------------+--------------------------------------+ 

從上面client,connection,database,results層層環節扣著,任何一個環節的字符集不兼容都會出現亂碼問題。

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

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

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

再了解一下一些場景下 utf8 和 utf8mb4 的問題點:

utf8編碼最多支持3字節的數據,而emoji表情符, 偏生字是4個字節的utf8無法存儲的,致辭延伸出utf8mb4字符集解決這個問題。

日常常用的字符集:

  • utf8mb4_bin:將字符串每個字符用二進制數據編譯存儲,區分大小寫,而且可以存二進制的內
  • utf8mb4_general_ci:ci即case insensitive,不區分大小寫。沒有實現Unicode排序規則,在遇到某些特殊語言或字符集,排序結果可能不一致。但在絕大多數情況下,這些特殊字符的順序并不需要那么精確。

utf8mb4_unicode_ci:是基于標準的Unicode來排序和比較,能夠在各種語言之間精確排序,Unicode排序規則為了能夠處理特殊字符的情況,實現了略微復雜的排序算法。

2. 字符集配置

mysql字符集如何設置,更改操作:

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

[mysqld]

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

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

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

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

 

  1. ##更改DATABASE  
  2. ALTER DATABASE `db1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci  
  3.  
  4. ##更改TABLE  
  5. ALTER TABLE `t1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci  
  6.  
  7. ##更改column字段  
  8. ALTER TABLE `t1`  modify `namevarchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '昵稱'

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

 

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

通過多方便設置,更改操作,檢查。字符集不再是隱藏問題。

3. 字符集對于數據庫的影響

字符集對整個數據庫影響面還是比較可觀的。庫更改 對于原先存在的表字段 都不影響 依次類推。所以數據庫>表>字段 都可以單獨設置字符集。

常見問題1:有索引 沒有走 因為進行了 字符集隱式轉換

 

常見問題2:在尾隨空格方面不同

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

 

對于字符集排序來說,字符串末尾的空格也有對應的處理。

 

  1. mysql> SELECT COLLATION_NAME, PAD_ATTRIBUTE  FROM INFORMATION_SCHEMA.COLLATIONS   
  2. WHERE CHARACTER_SET_NAME = 'utf8mb4'
  3. +----------------------------+---------------+ 
  4. | COLLATION_NAME             | PAD_ATTRIBUTE | 
  5. +----------------------------+---------------+ 
  6. | utf8mb4_general_ci         | PAD SPACE     | 
  7. | utf8mb4_bin                | PAD SPACE     | 
  8. | utf8mb4_unicode_ci         | PAD SPACE     | 
  9. | utf8mb4_icelandic_ci       | PAD SPACE     | 
  10. | utf8mb4_latvian_ci         | PAD SPACE     | 
  11. | ......... 
  12. | utf8mb4_0900_ai_ci         | NO PAD        | 
  13. | utf8mb4_de_pb_0900_ai_ci   | NO PAD        | 
  14. | utf8mb4_0900_bin           | NO PAD        | 
  15. +----------------------------+---------------+ 

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

常見問題3:對于數據的大小寫敏感

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

 

常見問題4:表情符,偏生字

常見錯誤代碼:1366 Incorrect string value: ‘\xF0\x9F\x99\x82’ for column ‘name’ at row 2

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

 

備注:對于jdbc來說沒有utf8mb4這樣的字符集說法。

4. 總結

從初期安裝開始,就需要配置好字符集,8.0版本的utf8mb4_0900目前為止也沒有類似的bug之類的,但還需要謹慎使用。選擇utf8mb4_unicode_ci即可。

一件件小事,積累起來就是變成大事。

責任編輯:華軒 來源: 數據和云
相關推薦

2010-06-07 16:09:58

MySQL字符集

2020-12-16 06:34:16

MySQL字符集服務器

2011-05-16 13:15:55

MySQL存儲字符集

2010-06-13 16:17:26

MySQL改變字符集

2009-02-24 10:51:30

2010-06-02 17:59:19

MySQL字符集

2010-10-09 10:57:22

MySQL默認字符集

2010-10-14 11:52:38

MySQL字符集

2010-04-30 10:16:22

Oracle字符集

2011-04-11 10:59:33

Oracle字符集

2010-10-09 11:31:25

MySQL字符集

2010-05-17 10:01:09

MySql字符集

2010-10-09 11:12:32

mysql默認字符集

2010-11-01 15:44:45

DB2字符集

2009-07-01 00:23:40

MySQL字符集亂碼

2010-11-23 17:04:54

MySQL字符集

2010-05-25 13:57:28

MySQL字符集

2011-04-11 11:05:12

Oracle字符集

2010-11-24 10:52:57

Mysql字符集

2010-10-09 10:35:46

MySQL字符集
點贊
收藏

51CTO技術棧公眾號

黄色一级在线视频| 日本精品裸体写真集在线观看| 国产精一区二区三区| 国产精品直播网红| 九九免费精品视频在线观看| 日韩在线国产精品| 在线播放高清视频www| 91精彩在线视频| 久久精品久久久| 欧美亚洲另类在线| 日韩黄色av| 精品国产一区二区三区久久久狼| av毛片在线| 91精品在线观看入口| 成人免费在线视频网| 欧美视频在线视频| 天堂a√中文在线| 欧美性猛交xxxx黑人| 三级理论午夜在线观看| 亚洲国产成人va在线观看天堂| 成人a在线视频| 免费看av成人| 国产精品丝袜视频| 亚洲精品网址| 91九色偷拍| 韩国成人二区| 亚洲精品动漫久久久久| 国产不卡网站| 色综合久久88色综合天天看泰| 国产一区二区三区黄网站| 欧美大尺度在线观看| 欧美黄色网视频| 国产欧美日韩专区发布| 国产精品激情| 亚洲精品一品区二品区三品区| 久久激情综合网| 国内精品视频一区二区三区| 久久久亚洲午夜电影| 国产精品美乳在线观看| 成人3d动漫在线观看| 91日韩在线播放| 精品福利在线| 久久久亚洲国产| 日韩精品一区二区三区免费观影| 91视频在线免费观看| 亚洲伊人网站| 九九热只有这里有精品| 婷婷综合久久| 成人观看高清在线观看免费| 欧美国产综合| 国产美女视频免费| 国产欧美精品一区aⅴ影院| 黄色三级电影网| 欧美熟乱第一页| 日韩高清不卡| 国产精品黄色av| 男人的天堂成人在线| 黄色www网站| 亚洲成国产人片在线观看| av在线下载| 亚洲**2019国产| 欧美在线综合| 午夜两性免费视频| 欧美日韩一区二区三区在线看| 欧美成人资源| 国产精品香蕉在线观看| 日韩电影免费一区| 欧美自拍视频在线| 好看的av在线不卡观看| 18禁裸男晨勃露j毛免费观看| 日韩毛片视频在线看| 黄色一级大片在线免费看产| 日韩在线观看免费全| 成人免费看片39| 日本美女爱爱视频| 懂色av一区二区在线播放| 香蕉视频亚洲一级| 国产a级一级片| 91精品国产一区二区人妖| 黄色18在线观看| 国产999精品久久久| 久久国产三级精品| 在线观看国产视频一二三| 亚洲精品美女在线| 亚洲女同中文字幕| 99色精品视频| 精品精品国产高清一毛片一天堂| 91精品啪在线观看国产爱臀| 亚洲国产精品高清| 国产一级免费在线观看| 另类色图亚洲色图| 丝袜美腿亚洲色图| 伪装者免费全集在线观看| 亚洲情综合五月天| 亚洲美洲欧洲综合国产一区| 国产美女在线免费观看| 亚洲激情自拍图| 亚洲黄色免费| 污导航在线观看| 久久久久久久久国产精品| 国内精品写真在线观看 | 91一区二区三区四区| 欧美 日韩 国产 高清| 日韩精品一区二区三区视频在线观看| 麻豆一区二区麻豆免费观看| 国产一级大片免费看| 精品少妇一区二区三区免费观看| 久久在线免费| www.男人的天堂| 俺去了亚洲欧美日韩| 免费人成在线不卡| 黄色一级大片在线免费看产| 91免费人成网站在线观看18| 国产精品乱码人人做人人爱| 99久久er| 中文精品无码中文字幕无码专区 | 亚洲图区欧美| 97成人在线视频| 日本一区二区免费在线| 亚洲视频资源| 人妻少妇精品无码专区二区| 日韩精品福利在线| 国产一区在线精品| 日韩天堂在线| 亚洲色图都市激情| 亚洲欧美日韩久久久久久| 久久国产精品久久久久久电车| 成人网视频在线观看| 精品999在线观看| 日韩午夜激情av| 麻豆精品网站| 免费高潮视频95在线观看网站| 新呦u视频一区二区| 欧美一区二区免费视频| 99热免费精品| 免费黄色在线观看| 蜜桃999成人看片在线观看| 欧美在线free| 亚洲免费一区二区| av免费不卡| 亚洲精品无码国产| 久久成年人免费电影| 97久久超碰国产精品| 日韩精品一区二区三区中文在线| 九九九九免费视频| 久久久久国产视频| 一区二区三区.www| 欧美激情日韩| 色婷婷视频在线观看| 一区二区三区精品国产| 亚洲精品视频在线播放| 成人性生交大片免费| 我要色综合中文字幕| 亚洲社区在线| 精品国产免费视频| 成人av网址在线观看| 特大黑人娇小亚洲女mp4| 在线观看久久久久久| 韩国女主播一区二区三区| 亚洲污视频在线观看| 国产成人精品视频在线| 欧洲亚洲精品在线| 蜜臀久久99精品久久久久宅男| 欧美天堂视频| 在线看的黄色网址| 国产日韩欧美夫妻视频在线观看| 精品视频123区在线观看| 激情欧美一区二区| 大型av综合网站| 四虎影视在线观看2413| 日韩一区二区三区高清| 久久精品福利视频| 精品美女国产在线| 蜜桃精品在线观看| 风间由美中文字幕在线看视频国产欧美 | 免费看av成人| 一级毛片视频在线| 青青青国产在线观看| 国产精品嫩草视频| 亚洲国产精品电影| 亚洲精品视频一区| 精品一二三四在线| 日韩欧美三级| 全球最大av网站久久| 亚洲最大黄色| 精品无码国模私拍视频| 亚洲a∨日韩av高清在线观看| 亚洲国产精品美女| 亚洲成人综合在线| 国产91丝袜在线播放0| 北条麻妃国产九九九精品小说 | 亚洲成人中文字幕| 自拍av一区二区三区| 久久久久久久欧美精品| 2021年精品国产福利在线| 黄色网页网址在线免费| 2019一级黄色毛片免费看网| 色狠狠久久av五月综合| 国产精品黄色av| 久久精品91久久香蕉加勒比|