MySQL 字元集utf8和utf-8的關係

来源:https://www.cnblogs.com/YangJiaXin/archive/2019/04/26/10772229.html
-Advertisement-
Play Games

[toc] 什麼是字元集(character set) 字元的二進位編碼方式 二進位編碼到一套字元的映射 二進位 編碼 字元 校對規則(collation) 在字元集內用於比較字元的一套規則 ASCII碼 1個位元組由8個二進位位組成 1個位元組可表示256種不同的狀態(256個不同符號) ASCII碼 ...


目錄


什麼是字元集(character set)

  • 字元的二進位編碼方式
  • 二進位編碼到一套字元的映射
  • 二進位->編碼->字元

校對規則(collation)

  • 在字元集內用於比較字元的一套規則

ASCII碼

  • 1個位元組由8個二進位位組成
  • 1個位元組可表示256種不同的狀態(256個不同符號)
  • ASCII碼規定了128個字元(英文字元和一些標點符號)的編碼

Unicode國際化支持

  • 世界上存在多種編碼方式,同一個二進位數字被解釋成了不同的符號
  • 現存 編碼 不能在多語言環境中使用,誕生了Unicode(統一碼)
  • 一個字元的Unicode編碼是確定的
  • Unicode編碼實現方式各不相同
  • Unicode的實現方式稱為Unicode轉化格式(UTF)

UTF-8

  • UTF-8是Unicode的實現方式之一
  • 其它實現方式還有UTF-16, UTF-32
  • 變長編碼,一個符號使用1~4個位元組表示
  • utf8是MySQL存儲Unicode數據的一種可選方法

utf8

  • MySQL中實現了UTF-8編碼的unicode 字元集
  • MySQL中utf8是utf8mb3的別名
  • utf8中,一個符號使用1~3個節點表示
  • 對UTF-8支持不徹底,可採用utf8mb4字元集

utf8與utf8mb4的關係

  • 都是實現了UTF-8編碼的unicode 字元集
  • utf8僅支持基本多語言平面Basic Multilingual Plane (BMP)
  • utf8mb4支持BMP之外的補充字元(如emoji,emoji 是一種特殊的 Unicode 編碼)
  • utf8 一個字元最多使用3個位元組存儲,utf8mb4 一個字元最多使用4個位元組存儲
  • 對於BMP字元,utf8和utf8mb4具有相同的編碼,相同的長度
  • 對於非BMP字元,utf8mb4使用4個位元組來存儲,utf8不能存儲非BMP字元
  • innodb中預設最大可對767個位元組建立索引
  • 使用utf8 的列最多可對255個字元建立索引
  • 使用utf8mb4 的列最多可對191個字元建立索引

超集

  • 字元集A,B ,B支持的所有字元A都支持,A 是B超集
  • 比如 GBK字元集是GB2312字元集的超集,它們又都是ASCII字元集的超集
  • utf8mb4是utf8的超集

字元集設置

set names x 等價於

  • set character_set_client=x;
  • set character_set_connection=x;
  • set character_set_results=x;

--default-character-set 用戶連接時設置字元集 等價於

  • set character_set_client=x;
  • set character_set_connection=x;
  • set character_set_result=x;
    init-connect=set names binary
  • 讓client和server交互的時候以 什麼模式(不做任何轉化)來傳送

default-character-set

  • 設置[mysql]和[client] 中的字元集

character-set-server

  • 設置[mysqld] 進程的預設字元集

collation-server

  • 設置[mysqld] 進程的預設校對規則
  • utf8_general_ci 查找、排序不區分大小寫
  • utf8_bin 查找、排序區分大小寫

參考
Unicode Support
字元集與編碼雜談
ASCII,Unicode 和 UTF-8
清官談mysql中utf8和utf8mb4區別


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.選擇安裝VMwareTools 2.將載入後的Vmware Tools中的*.tar.gz文件,複製到桌面後提取,否則會報錯: 3.然後進入提取後的文件下,運行終端 然後輸入密碼一直回車就好。 4.選擇自適應客戶端 ...
  • 系統: VMTOOLs下載: 鏈接:https://pan.baidu.com/s/1KIzVWtPrb2vSrtokONToBw 提取碼:zea3 1、虛擬機設置--顯示器--監視器--指定監視器設置--任意監視器的最大解析度(自行選擇適合自己屏幕的尺寸)確定即可。 2、啟動蘋果系統一直按住com ...
  • 近期轉向core開發,mssql也支持了docker,索性把手上的一臺服務改成centos做測試開發。中間安裝docker碰到的問題做個記錄。 docker版本 docker從1.13版本之後採用時間線的方式作為版本號,分為社區版CE和企業版EE。Docker CE即社區免費版,Docker EE即 ...
  • 45款星光和光暈PS筆刷(45 Lens Flare & Stars Photoshop)是一套應用於Photoshop的星光和光暈PS筆刷,包含45款不同效果的筆畫樣式,應用的時候,如果需要,還可以疊加,從而生成成百上千的不同視覺效果的圖片,作為裝飾元素應用在數位處理上非常棒! 您如果需要這樣的一 ...
  • win7防火牆例外設置方法 控制面板(右上角選擇查看方式為大圖標) 防火牆 高級設置 高級設置 出站規則 最右邊 新建規則“新建出站規則嚮導”,在嚮導的第一步,選擇要創建的防火牆規則類型,選擇第二個“埠”。 win7防火牆添加埠方法 Win7的防火牆做了比較大升級 設置已經分為入站和出站。下麵以 ...
  • 一、 先搞清楚自己電腦的類型: A MBR傳統bios+單硬碟 B MBR傳統bios+雙硬碟(SSD固態硬碟+機械硬碟) C UEFI新式bios+單硬碟 D UEFI新式bios+雙硬碟(SSD固態硬碟+機械硬碟) E 以上任意一種情況+電腦有特殊獨立顯卡(這種情況一般不考慮,只有少數電腦會遇到 ...
  • 1、問題:There is no valid Xilinx installation that this Update can be applied to. 解決方法一:下載的是更新包,如果設備沒有預裝vivado的情況下就會出現這種問題;可以下載完整版本(Full Product Installa ...
  • 1.刪除資料庫中的自建用戶;2.在sql中"安全性","登錄名",新建個登錄名,名稱是用戶名,採用sql身份驗證,去掉密碼策略, 選擇頁下選擇“用戶映射”,選擇資料庫;3.打開資料庫,選擇“安全性”,在新建的用戶上,“屬性”,“常規”,資料庫角色成員選擇db_owner. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...