前言
每次利用終端 創(chuàng)建數(shù)據(jù)庫或者創(chuàng)建表的時(shí)候,字符集都是latin1,或者進(jìn)行插入值的時(shí)候,顯示的是亂碼(不指定字符集的時(shí)候)如下:
![](/d/20211017/44d3219e30c144c4e710a62d8fd0ee55.gif)
![](/d/20211017/485b1fe564fb7fdfa5c80e81d6cfacea.gif)
查看當(dāng)前數(shù)據(jù)庫的字符集
![](/d/20211017/9c6bb4a0eca8ef3ab2029750ac7fa0cd.gif)
character_set_client:客戶端請求數(shù)據(jù)的字符集
character_set_connection:客戶機(jī)/服務(wù)器連接的字符集
character_set_database:默認(rèn)數(shù)據(jù)庫的字符集,無論默認(rèn)數(shù)據(jù)庫如何改變,都是這個(gè)字符集;如果沒有默認(rèn)數(shù)據(jù)庫,那就使用 character_set_server指定的字符集,這個(gè)變量建議由系統(tǒng)自己管理,不要人為定義。
character_set_filesystem:把os上文件名轉(zhuǎn)化成此字符集,即把 character_set_client轉(zhuǎn)換character_set_filesystem, 默認(rèn)binary是不做任何轉(zhuǎn)換的
character_set_results:結(jié)果集,返回給客戶端的字符集
character_set_server:數(shù)據(jù)庫服務(wù)器的默認(rèn)字符集
character_set_system:系統(tǒng)字符集,這個(gè)值總是utf8,不需要設(shè)置。這個(gè)字符集用于數(shù)據(jù)庫對象(如表和列)的名字,也用于存儲在目錄表中的函數(shù)的名字。
查看當(dāng)前數(shù)據(jù)庫的校對規(guī)則
show variables like 'collation%';
![](/d/20211017/6ea9d3232998ab5f317b72769b616816.gif)
參數(shù)文件中,client,mysql以及mysqld中都設(shè)置了utf8mb4字符集,但是沒有設(shè)置collation相關(guān)參數(shù)
![](/d/20211017/c995b9c4fb1fb0c2496c12b19fdbb3fd.gif)
collation_connection 當(dāng)前連接的字符集。
collation_database 當(dāng)前日期的默認(rèn)校對,每次用USE語句來“跳轉(zhuǎn)”到另一個(gè)數(shù)據(jù)庫的時(shí)候,這個(gè)變量的值就會改變。如果沒有當(dāng)前數(shù)據(jù)庫,這個(gè)變量的值就是collation_server變量的值。
collation_server 服務(wù)器的默認(rèn)校對。
排序方式的命名規(guī)則為:字符集名字_語言_后綴,其中各個(gè)典型后綴的含義如下:
1)_ci:不區(qū)分大小寫的排序方式
2)_cs:區(qū)分大小寫的排序方式
3)_bin:二進(jìn)制排序方式,大小比較將根據(jù)字符編碼,不涉及人類語言,因此_bin的排序方式不包含人類語言
create database rommel default charset utf8 collate utf8_romanian_ci;
![](/d/20211017/ffb3eb2c62c5d5d0f11dc6afbd0401ca.gif)
參數(shù)文件中[mysqld]添加以下
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
進(jìn)行數(shù)據(jù)庫的重啟后測試。
![](/d/20211017/69b22b9989da70bc2e931e1b0ab87d96.gif)
![](/d/20211017/8855f46cc2defc531c9a2db188690432.gif)
![](/d/20211017/c8bd0179c3f31f41f3b41e90f601aae6.gif)
一系列測試,修改成功。
所以在安裝的時(shí)候,就要進(jìn)行參數(shù)修改,不可能安裝好了在對數(shù)據(jù)庫進(jìn)行編譯, 如果生產(chǎn)不能進(jìn)行數(shù)據(jù)庫的重啟,除了新建每張表和數(shù)據(jù)庫指定寫死之外,就只能臨時(shí)指定字符集了。
臨時(shí)指定:
SET character_set_client = utf8mb4;
SET character_set_connection = utf8mb4;
SET character_set_database = utf8mb4;
SET character_set_results = utf8mb4;
SET character_set_server = utf8mb4;
![](/d/20211017/d597ea8b0ffe2abe404f5cc7049c06be.gif)
總結(jié)
到此這篇關(guān)于MYSQL字符集設(shè)置(終端的字符集)的文章就介紹到這了,更多相關(guān)MYSQL字符集設(shè)置(終端的字符集)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 深入Mysql字符集設(shè)置分析
- mysql odbc字符集設(shè)置(中文顯示亂碼)
- 深入Mysql字符集設(shè)置[精華結(jié)合]
- Mysql 默認(rèn)字符集設(shè)置方法(免安裝版)
- 關(guān)于mysql字符集設(shè)置了character_set_client=binary 在gbk情況下會出現(xiàn)表描述是亂碼的情況
- 深入Mysql字符集設(shè)置 圖文版
- Docker下mysql設(shè)置字符集的方法
- 帶你5分鐘讀懂MySQL字符集設(shè)置
- 基于mysql 5.5 設(shè)置字符集問題的詳解
- mysql 常用設(shè)置 字符集編碼、自動完成(自動提示)、監(jiān)聽外網(wǎng)ip