《MYSQL數(shù)據(jù)庫對(duì)MySQL中字符集的相關(guān)設(shè)置操作的基本教程》要點(diǎn):
本文介紹了MYSQL數(shù)據(jù)庫對(duì)MySQL中字符集的相關(guān)設(shè)置操作的基本教程,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
1、查看字符集相關(guān)變量MYSQL必讀
mysql> show variables like 'character%';
+――――――――C+――――――――――-+ | Variable_name | Value | +――――――――C+――――――――――-+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | c:\wamp\mysql\share\charsets\ | +――――――――C+――――――――――-+
2、字符集轉(zhuǎn)換過程
客戶端――C字符集轉(zhuǎn)換器―――C服務(wù)
gbk ――――gbk-utf8-utf8―――-utf8
gbk――――-gbk-gbk-utf8―――-utf8
客戶端要告訴服務(wù)端使用的編碼是什么,然后沒有直接告訴服務(wù)器而告訴“轉(zhuǎn)換器”
字符集轉(zhuǎn)換器收到客戶端信息后查看服務(wù)器是什么編碼,然后將客戶端傳來的字符集轉(zhuǎn)換成服務(wù)器設(shè)置的字符集
服務(wù)器向客戶端發(fā)送信息時(shí)也是先告訴“轉(zhuǎn)換器”MYSQL必讀
3、字符集變量解釋MYSQL必讀
character_set_client?????????????????????
客戶端字符集,連接mysql的客戶端程序的字符集,該變量告訴轉(zhuǎn)換器客戶端發(fā)送的字符集.MYSQL必讀
?character_set_connection
轉(zhuǎn)換器轉(zhuǎn)換要轉(zhuǎn)換成的字符集MYSQL必讀
character_set_server
服務(wù)端使用的字符集,存入數(shù)據(jù)時(shí)使用的字符集MYSQL必讀
character_set_results
查詢的結(jié)果是什么編碼MYSQL必讀
推論:什么時(shí)候會(huì)出現(xiàn)亂碼MYSQL必讀
1:client 什么與實(shí)際不符,微軟命令提示符默認(rèn)是gbk,如果設(shè)置成utf8就會(huì)出現(xiàn)亂碼MYSQL必讀
2:results與客戶端頁面不符的時(shí)候MYSQL必讀
什么時(shí)候會(huì)丟失數(shù)據(jù)MYSQL必讀
connection和服務(wù)器的字符集比client小時(shí),會(huì)丟失數(shù)據(jù),比如客戶端是utf8而轉(zhuǎn)換器是gbkMYSQL必讀
當(dāng)客戶端是utf8 而服務(wù)端是 gbk時(shí)要設(shè)置MYSQL必讀
set character_set_client=utf8MYSQL必讀
set character_set_connection=gbk/utf8 這里設(shè)置什么都可以,因?yàn)樽罱K轉(zhuǎn)換器會(huì)根據(jù)服務(wù)器的類型進(jìn)行轉(zhuǎn)換MYSQL必讀
set character_set_results=utf8MYSQL必讀
4、設(shè)置字符集變量MYSQL必讀
set names utf8???? 進(jìn)入mysql設(shè)置所用的字符集MYSQL必讀
在my.conf中添加MYSQL必讀
[client] default-character-set=utf8 [mysqld] default-character-set=utf8
5.修改mysql字符集
將latin1字符集的數(shù)據(jù)庫修改成gbk字符集的數(shù)據(jù)庫的過程
(1)、導(dǎo)出表結(jié)構(gòu)
MYSQL必讀
mysqldump -uroot -p Cdefault-character-set=gbk -d DATABASE_NAME > createtable.sql
??????? Cdefault-character-set=gbk 表示以什么字符集連接
??????? -d 表示只導(dǎo)出表結(jié)構(gòu),不導(dǎo)出數(shù)據(jù)
(2)、修改createtable.sql文件中的表結(jié)構(gòu)定義的字符集為新字符集
(3)、導(dǎo)出所有記錄
MYSQL必讀
mysqldump -uroot -p Cquick Cno-create-info Cextend-insert Cdefault-character-set DATABASE_NAME > data.sql
??????? Cquick:改訊息用于轉(zhuǎn)儲(chǔ)大的表.它強(qiáng)制mysqldump從服務(wù)器一次一行的檢索表中的行二不是檢索所有行,并在輸出錢將它緩存到內(nèi)存中
??????? Cextended-insert:使用包括幾個(gè)values列表的多行insert語法.這樣轉(zhuǎn)儲(chǔ)文件更小,重載文件時(shí)可以加速插入
??????? Cno-create-info:不重新創(chuàng)建每個(gè)轉(zhuǎn)儲(chǔ)表的create table 語句
??????? Cdefault-character-set=latin1:安裝原有的字符集導(dǎo)出所有數(shù)據(jù),這樣導(dǎo)出的文件中,所有中文都是可見的,不會(huì)保存成亂碼
(4)、帶寬data.sql,將set names latin1 修改成set names gabk
(5)、使用新的字符集創(chuàng)建新的數(shù)據(jù)庫
MYSQL必讀
create database DATABASE_NAME default charset gbk;
(6)、創(chuàng)建表,執(zhí)行createtable.sql
MYSQL必讀
mysql -uroot -p DATABASE_NAME < createtable.sql
(7)、導(dǎo)入數(shù)據(jù),執(zhí)行data.sql
MYSQL必讀
mysql -uroot -p DATABASE_NAME < data.sql
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/5914.html