溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mysql中如何設(shè)置字符集

發(fā)布時(shí)間:2021-07-27 14:49:05 來源:億速云 閱讀:180 作者:Leah 欄目:MySQL數(shù)據(jù)庫

這篇文章將為大家詳細(xì)講解有關(guān)Mysql中如何設(shè)置字符集,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。


####################################
DROP TABLE test_var;
CREATE TABLE test_var(NAME VARCHAR(5)) CHARACTER SET utf8;
INSERT INTO test_var(NAME) VALUES('一路上有你'); --successful
INSERT INTO test_var(NAME) VALUES('一路上有你們'); --Data too LONG FOR COLUMN 'name' AT ROW 1
INSERT INTO test_var(NAME) VALUES(',,,,,');-- successful
INSERT INTO test_var(NAME) VALUES(',,,,,,'); --6個(gè)符號(hào)失敗
SELECT * FROM test_var;
######################################
當(dāng)然所有的前提是字符集設(shè)置正確了,才能正確insert。
在創(chuàng)建表的時(shí)候,因?yàn)闆]有指定字符集utf8,而采用了數(shù)據(jù)庫默認(rèn)的字符集latin1,我客戶端的字符集是utf8,
在進(jìn)行client->connection->server的字符集轉(zhuǎn)換,即utf8->latin1->latin1轉(zhuǎn)換,在第一個(gè)轉(zhuǎn)換時(shí)便有了亂碼,那么在insert的時(shí)候報(bào)了亂碼錯(cuò)誤。
#######################################
由于后臺(tái)前端都是采用了utf8字符集,所以建議數(shù)據(jù)庫也采用utf8字符集。
為此我們需要修改數(shù)據(jù)庫默認(rèn)的字符集。
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
修改MySQL字符集
1、修改服務(wù)器級(jí)別字符集


a.臨時(shí)修改
mysql>SET GLOBAL character_set_server=utf8;


b.永久修改
打開/etc/mysql/my.cnf,在[mysqld]后添加character-set-server=utf8


2、修改數(shù)據(jù)庫級(jí) 
a. 臨時(shí)更改
mysql>SET GLOBAL character_set_database=utf8;


b. 永久更改
改了服務(wù)器級(jí)就可以了


3、修改表級(jí) 
mysql>ALTER TABLE table_name DEFAULT CHARSET utf8; 更改了后永久生效


4、修改列級(jí)修改示例
mysql>ALTER TABLE `products` CHANGE `products_model` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; 更改了后永久生效 


5、更改連接字符集
a. 臨時(shí)更改:mysql> SET GLOBAL character_set_client;


b. 永久更改:打開/etc/mysql/my.cnf,在[client]后添加default-character-set=utf8


Notice:3.1和3.5需要重啟mysql:   service mysql restart
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
字符集的概念
基本概念


@字符(Character)是指人類語言中最小的表義符號(hào)。例如’A'、’B'等;
@給定一系列字符,對(duì)每個(gè)字符賦予一個(gè)數(shù)值,用數(shù)值來代表對(duì)應(yīng)的字符,這一數(shù)值就是字符的編碼(Encoding)。例如,我們給字符’A'賦予數(shù)值0,給字符’B'賦予數(shù)值1,則0就是字符’A'的編碼;
@給定一系列字符并賦予對(duì)應(yīng)的編碼后,所有這些字符和編碼對(duì)組成的集合就是字符集(Character Set)。例如,給定字符列表為{’A',’B'}時(shí),{’A'=>0, ‘B’=>1}就是一個(gè)字符集;
@字符序(Collation)是指在同一字符集內(nèi)字符之間的比較規(guī)則;
@確定字符序后,才能在一個(gè)字符集上定義什么是等價(jià)的字符,以及字符之間的大小關(guān)系;
@每個(gè)字符序唯一對(duì)應(yīng)一種字符集,但一個(gè)字符集可以對(duì)應(yīng)多種字符序,其中有一個(gè)是默認(rèn)字符序(Default Collation);
@MySQL中的字符序名稱遵從命名慣例:以字符序?qū)?yīng)的字符集名稱開頭;以_ci(表示大小寫不敏感)、_cs(表示大小寫敏感)或_bin(表示按編碼值比較)結(jié)尾。例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等價(jià)的;

關(guān)于Mysql中如何設(shè)置字符集就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI