mysql字符集設置

1.1mysql字符集知識:

概述:字符集就是一套文字符號及其編碼,比較規則的集合。 Mysql數據庫字符集包括字符集(character)和校對規則(collation)這兩個概念。其中字符集用於定義mysql數據庫的存儲方式,而校對規則是定義字符串的比較方式,而且字符集和校對規則是一對多的關係mysql

查看mysql可用的字符集的命令是show character set;linux

 

1.2mysql數據庫使用常見字符集介紹:

經常使用·字符集sql

長度數據庫

說明緩存

GBK服務器

2app

不是國際標準,但支持的系統較多性能

UTF-8ui

3編碼

中英文合併,建議使用此字符集

utf8mb4

4

UTF-8 Uniconde

Lantin1

1

Mysql默認安裝使用的字符集

 

 

 

 

 

 

1.3選擇合適的字符集

1)知足應用支持語言的需求,處理各類各樣的文字,支持不一樣語言的國家和地區,應選Unicode字符集,即utf-8。

2)處理數據量較大,且要支持中文,性能要求很高,可選GBK(定長字符集,佔用兩個字節)對大量運算處理,比較排序,更快,更高。

3)移動互聯網業務,建議使用utf8mb4字符集。

 

2.1mysql字符集的設置

1)mysql默認狀況下字符集的設置

show variables like 'character_set%';

+--------------------------+-------------------------------------------+

| Variable_name            | Value                                     |

+--------------------------+-------------------------------------------+

| character_set_client     | utf8                                      |

| character_set_connection | utf8                                      |

| character_set_database   | utf8                                      |

| character_set_filesystem | binary                                    |

| character_set_results    | utf8                                      |

| character_set_server     | utf8                                      |

| character_set_system     | utf8                                      |

| character_sets_dir       | /application/mysql-5.6.36/share/charsets/ |

 

2)linux服務器端

[root@db01 mysql]# cat /etc/sysconfig/i18n

LANG="zh_CN.UTF-8

3)臨時修改mysql客戶端字符集

mysql> set names utf8;

Query OK, 0 rows affected (0.00 sec)

永久修改:

[client]

default-character-set=utf8

4)修改mysql服務器端字符集

在mysqld下添加default-character-set=utf8

Mysql5.5及其之後版本

[mysqld]

character-set-server=utf8

5)修改庫表字符集的方法:

 修改庫:alter database databasename character set ******

 修改表:alter table tablename character set ******

庫的修改:

例如:show create database oldboy\G;

*************************** 1. row ***************************

       Database: oldboy

Create Database: CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET gbk */

1 row in set (0.00 sec)

oldboy數據庫字符集目前是gbk,將其修改成utf8,命令以下;

alter database oldboy character set utf8 collate utf8_general_ci ;

表的修改:

alter table student character set utf8 collate utf8_general_ci ;

 

2.2生產環境中字符集的修改

說明:如何生產環境中沒有調整好字符集的設定,而運行以後發現知足不了需求而調整,但不想丟失數據的話,能夠進行字符集的修改,直接經過alter database databasename character set ******和alter table tablename character set ******命令進行修改,只能對修改後插入的數據有效,在修改以前插入的數據依然會保留以前的字符集,要想實現對以前數據也能修改字符集,必須將其數據導出,再通過調整從新導入便可。

模擬過程:

1) 導出表結構

mysqldump -uroot -p --default-character-set=utf8 -d oldboy>oldboy.sql

說明:--default-character-set=utf8 :以什麼字符集鏈接 -d:只導出表結構,不導出數據

手工修改oldboy.sql表中的字符集爲新的字符集。

2) 確保數據庫再也不更新數據,導出數據。

mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=gbk oldboy>data.sql

參數說明:

--quick:功能是從服務器一次一行檢索表中的行,而不是檢索全部的行,並在輸出前將它緩存到內存中,用於轉儲較大的表。

--extended-insert:使轉儲文件更小,從新載入文件能夠加速插入。

--no-create-info:不會從新建立轉儲表create table語句。

--default-character-set=gbk:保留原有導出數據的字符集,這樣導出的文件不會出現·亂碼。

3)打開data.sql,將set names gbk 修改成 set names utf8

4)使用新的字符集建立新的數據庫

   show create database oldboy default charset utf8;

5)建立表結構,執行oldboy.sql。

mysql -uroot -p oldboy<oldboy.sql

6)從新導入數據u,執行data.sql。

   mysql -uroot -p oldboy<data.sql

相關文章
相關標籤/搜索