MySQL學習筆記(8):字元集

来源:https://www.cnblogs.com/garvenc/archive/2020/07/01/mysql_learning_8_character_set.html
-Advertisement-
Play Games

本文更新於2019-06-16,使用MySQL 5.7,操作系統為Deepin 15.4。 常用字元集 字元集 定長 代碼寬度 說明 ASCII或ISO-646 是 1位元組7位 英文字母、數字、標點符號和33個控制符 ISO-8859系列 是 1位元組8位 各西歐字元集,相容ASCII GB2312 ...


本文更新於2019-06-16,使用MySQL 5.7,操作系統為Deepin 15.4。

目錄

常用字元集

字元集 定長 代碼寬度 說明
ASCII或ISO-646 1位元組7位 英文字母、數字、標點符號和33個控制符
ISO-8859系列 1位元組8位 各西歐字元集,相容ASCII
GB2312 1或2位元組 相容ASCII,不推薦使用
GBK 1或2位元組 相容GB2312
GB18030 1、2或4位元組 相容GBK
Unicode或UCS-4或ISO-10646 4位元組 從最高位元組起依次代表組(group)、面(plane)、行(row)、格(ceil),包括BMP、輔助字面和專用字面
UCS-2 2位元組 UCS-4的0組0面,即基本多語言文字面(BMP)

Unicode有如下編碼方式:

編碼方式 定長 代碼寬度 說明
UTF-8 1至6位元組 相容ASCII
UTF-16 2或4位元組 BMP使用2位元組表示,以外使用4位元組表示,按位元組序不同分為UTF-16BE和UTF-16LE
UTF-32 4位元組 Unicode原始編碼,按位元組序不同分為UTF-32BE和UTF-32LE

UTF-8編碼如下:

位元組 代碼位數 代碼空間 位元組組合
1 0-7 0x0 - 0x7f 0xxxxxxx
2 8-11 0x80 - 0x7ff 110xxxxx,10xxxxxx
3 12-16 0x800 - 0xffff 1110xxxx,10xxxxxx,10xxxxxx
4 17-21 0x10000 - 0x1fffff 11110xxx,10xxxxxx,10xxxxxx,10xxxxxx
5 22-26 0x200000 - 0x3ffffff 111110xx,10xxxxxx,10xxxxxx,10xxxxxx,10xxxxxx
6 27-31 0x4000000 - 0x7fffffff 1111110x,10xxxxxx,10xxxxxx,10xxxxxx,10xxxxxx,10xxxxxx

每個漢字,GBK使用2位元組,UTF-8使用3位元組。

MySQL字元集

MySQL的UTF-8字元集最大長度為3位元組,只能表示BMP中的字元(0-0xffff)。若要使用大於3位元組的字元(如emoji),則需使用utf8mb4字元集。

MySQL包含字元集和校對規則兩個概念。校對規則用來定義比較字元串的方式,一種字元集至少有一種校對規則,但可以有多種校對規則。校對規則的命名以其相關的字元集名開始,中間通常包含一個語言名,並且以_ci(大小寫不敏感)、_cs(大小寫敏感)或_bin(比較是基於字元編碼的值而與語言無關)結束,如gbk_chinese_ci。

MySQL的字元集和校對規則有4個級別的設置:

  • 伺服器級:可通過配置文件或啟動選項設置,預設為latin1。
  • 資料庫級:可通過CREATE DATABASEALTER DATABASE設置,如資料庫中已存在記錄,修改字元集不會將已有數據按照新的字元集進行存放。
  • 表級:可通過CREATE TABLEALTER TABLE設置,如表中已存在記錄,修改字元集不會將已有數據按照新的字元集進行存放。
  • 欄位級:可通過CREATE TABLEALTER TABLE設置,如表中已存在記錄,修改字元集不會將已有數據按照新的字元集進行存放。

客戶端和伺服器交互時,還存在客戶端、連接、返回結果的字元集和校對規則,通常這三者是相同的,才可以確保數據能被正確讀取。可以通過SET NAMES charset同時修改這三個值。可以通過[_charset] 'str' [COLLATE collation]強制字元串的字元集和校對規則。

已有記錄的字元集調整,需先將數據導出,經過適當調整後重新導入。


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

-Advertisement-
Play Games
更多相關文章
  • 離線安裝 軟體包下載地址:http://mirrors.sohu.com/mysql/MySQL-8.0/ 這裡使用8.0.18版本,對應各軟體包下載鏈接如下: http://mirrors.sohu.com/mysql/MySQL-8.0/mysql-community-client-8.0.18 ...
  • 一、環境 環境:Centos 6.5 ,MySQL 5.7.22, yum install 命令安裝 二、備份 指定備份路徑,指定 --master-data=2 參數備份時輸出 MASTER_LOG_POS 位置信息 備份腳本: 1 #!/bin/bash 2 3 backup_path=/hom ...
  • MySQL 游標 SQL語句是“面向集合編程”,重點在於“獲得什麼”,而不是“如何獲得”。 有時候我們不需要對查詢結構集的每一條都進行相同的操作,而是只操作其中的某些行,這時候就需要面向過程的編程方法,而游標就是面向過程編程方式的體現 游標就相當於“指針”,它一次只指向一行 游標的作用就是用於對查詢 ...
  • create database 課程管理 //1:create database為SQL語句,用於創建資料庫。執行完之後會創建一個新資料庫及存儲該資料庫的文件,或從先前創建的資料庫文件中附加資料庫。 2:資料庫名稱在伺服器中必須唯一,並且符合標識符的規則。使用一條create database語句即 ...
  • MySQL補充——忘記密碼怎麼辦 摘要:本文主要記錄了在忘記密碼時怎麼辦。 部分內容來自以下博客: https://www.cnblogs.com/wuotto/p/9682400.html 關閉MySQL資料庫 使用命令檢查MySQL資料庫是否已經關閉: 1 [root@localhost ~]# ...
  • DELETE FROM Persons WHERE Id NOT IN (SELECT MIN(Id)AS id FROM Persons GROUP BY Email) ; You can't specify target table 'Person' for update in FROM cla ...
  • MySQL補充——獲取自增主鍵的下一個自增值 摘要:本文主要學習瞭如何獲得自增主鍵的下一個值。 格式 1 select auto_increment from information_schema.tables where table_schema='資料庫名' and table_name='表名 ...
  • 文章前言 提到記憶體管理,我們就需要考慮Redis的記憶體過期策略和記憶體淘汰機制。該文章便從這兩方面入手,分享一些在Redis記憶體方面相關的基礎知識。 文章中使用的示例版本為Redis5.0版本。 記憶體過期策略 記憶體過期策略主要的作用就是,在緩存過期之後,能夠及時的將失效的緩存從記憶體中刪除,以減少記憶體的 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...