日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql utf8mb3 utf8mb4 与UTF8 字符集参数(character_set_system)的说明

發布時間:2023/12/8 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql utf8mb3 utf8mb4 与UTF8 字符集参数(character_set_system)的说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mysql UTF8之utf8mb3 utf8mb4

字符集概述

字符集即是為了兼容各國的文字而做的編碼,比如GB2312、GBK等,通用的編碼我們用utf8。

mysql(5.7及8.0)里utf8實際是用3個字節存儲即對應utf8mb3,而真正意義上的utf8對應的是4個字節存儲即對應utf8mb4。

utf8mb3和utf8mb4的比較:

比較內容

utf8mb3

utf8mb4

存儲最大字節數

3

4

支持類型

基本多文種平面 + US-ASCII

輔助平面(Supplementary) 、基本多文種平面 + US-ASCII

unicode范圍

U+0000 至 U+FFFF

U+0000至U+10FFFFF

支持字符

英文字母,中日韓(CJK)大部分常用字等英文字母,中日韓(CJK)非常用字,數學符號,emoji表情等

字符集相關參數

變量名

含義

character_set_client

設置客戶端使用的字符集。

character_set_connection

設置連接數據庫時的字符集,當程序里沒指定連接數據庫的字符集時的選項。

character_set_database

設置創建數據庫時默認字符集,即創建數據庫時不指定字符集時的選項。

character_set_filesystem

文件系統的編碼格式,把操作系統上的文件名轉化成此字符集,即把 character_set_client轉換character_set_filesystem, 默認binary是不做任何轉換的。

character_set_results

數據庫給客戶端返回時使用的字符集,如果沒指定則用character_set_server。

character_set_server

服務器的默認字符集。

character_set_system

數據庫系統存儲系統元數據的字符集,該值為utf8。

character_sets_dir

字符集安裝的目錄。

配置示例

-- 情景一:將當前服務器的默認服務器、默認數據庫字符集參數改成utf8mb4。

-- #1 情況一,如果是windows則找到my.ini修改如下內容后重啟數據庫服務器。

?[mysqld]下追加如下內容:

character-set-client-handshake = FALSE

character-set-server=utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

character-set-client-handshake和init_connect即指定了客戶端連接時的字符集。如果想客戶端連接時指定字符集,則這兩個參數可不指定。

-- #1 情況二,如果是linux,可先通過命令查看mysql加載配置文件的順序。

mysqld --help --verbose 2>/dev/null|grep -A1 "Default option"

Default options are read from the following files in the given order:

/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

即先是/etc/my.cnf 再是/etc/mysql/my.cnf 而后是~/.my.cnf。

當前演示環境里沒有/etc/my.cnf,只有/etc/mysql/my.cnf

只有/etc/mysql/my.cnf,而其對應的服務端配置在/etc/mysql/mysql.conf.d內,

客戶端配置在/etc/mysql/conf.d/內。

所以如上#1里配置內容需要在/etc/mysql/mysql.conf.d內。

-- #2 創建新的數據庫,可見當前數據庫的默認字符集已經變為utf8mb4。

CREATE DATABASE shenl_2;

USE shenl_2;

show variables LIKE '%chara%'

/*

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????? utf8mb3

character_sets_dir???? /usr/share/mysql-8.0/charsets/

*/

-- 情景二: 通過SQL命令修改數據庫、表的字符集

ALTER DATABASE shenl_2 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

ALTER TABLE tb_user ?CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 情景三: 修改客戶端、連接、結果集的字符集時在客戶端參數(客戶端文件在目錄/etc/mysql/conf.d/內)里如下定義即可:

[mysql]

default-character-set=utf8mb4

-- 情景四:客戶端指定字符集連入數據庫。

mysql -uroot -h localhost -proot1234 --default-character-set=latin1

show variables LIKE '%chara%';

注:1 該方式在服務端不指定該方式在服務端不指定character-set-server時有效。

2 同理可以在客戶端配置里指定default-character-set參數。

?

:

1 參數default-character-set=utf8mb4是客戶端里的參數。

2 參數character_set_system是只讀(不可修改)參數。

?3 mysql源碼預編譯時指定的字符集參數 -DEFAULT_CHARSET=utf8mb4對應character-set-server=utf8mb4。

總結

以上是生活随笔為你收集整理的Mysql utf8mb3 utf8mb4 与UTF8 字符集参数(character_set_system)的说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。