一、字元集的概念
字元集規範了程式碼與字元之間的對應關係,指定了電腦字元的編碼方式。不同資料庫系統中的字元集設定可能不同,而不同字元集之間有獨特的特性和優點。相較於Latin1/Latin7,GB2312/GBK/GB18030在處理漢字方面具有更大的優勢。
在MySQL中,字元集指的是編碼字元資料的方式,包括資料庫、表格和欄位。通俗地說,字元集就是指用來儲存和處理字元、字串的方式。
MySQL中支援的字元集主要有以下幾種:ASCII、GBK、GB2312、UTF-8、UTF-16和ISO-8859等,其中UTF-8是MySQL最常用的字元集,因為它支援多語言、編碼格式靈活、節省空間等好處。
二、MySQL字元集的設定方法
查詢MySQL支援的字元集
在MySQL資料庫中,可以透過指令查詢資料庫支援的字元集,方法如下:
SHOW CHARACTER SET;
#此指令可以列出MySQL可用的各種字元集,例如:
Description | Default collation | Maxlen | |
---|---|---|---|
Big5 Traditional Chinese | big5_chinese_ci | #2 | |
##DEC West European | dec8_swedish_ci | 1 | |
DOS West European | cp850_general_ci | #1 | #cp850_general_ci |
hp8 | HP West European | hp8_english_ci | |
##koi8r | KOI8-R Relcom Russian | koi8r_general_ci | |
latin1 | iso-8859-1 West European | latin1_swedish_ci | |
latin2 | iso-8859-2 Central European | latin2_general_ci | ##1|
swe7 | 7bit Swedish | swe7_swedish_ci | ##1 |
ascii | US ASCII | ascii_general_ci | 1 |
ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
sjis | Shift-JIS Japanese | sjis_japanese_ci | ##2|
iso-8859-8 Hebrew | #hebrew_general_ci | ##1 | |
#TIS620 Thai | tis620_thai_ci | 1 | ##euckr |
euckr_korean_ci | #EUC-KR Korean | euckr_korean_ci | #2 |
koi8u | KOI8-U Ukrainian | koi8u_general_ci | ##1 |
#gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | ##2|
iso-8859- 7 Greek | greek_general_ci | 1 | |
##Windows Central European | ##cp1250_general_ci | 1 | |
GBK Simplified Chinese | gbk_chinese_ci | 2 | |
iso-8859-9 Turkish | latin5_turkish_ci | 1 | |
ARMSCII-8 Armenian | armscii8_general_ci | 1 | |
UTF-8 Unicode | utf8_general_ci | # 3 | |
UCS-2 Unicode | ucs2_general_ci | 2 | |
DOS Russian | cp866_general_ci | 1 | ##keybcs2 |
##keybcs2 | #DOS Kamenicky Czech-Slovak | ##keybcs2_general_ci | 1 |
#macce | Mac Central European | macce_general_ci | 1 |
macroman | Mac West European | macroman_general_ci | 1 |
cp852 | DOS Central European | cp852_general_ci | 1 |
latin7 | iso-8859-13 Baltic | # latin7_general_ci | 1 |
utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
4 | cp1251 | Windows Cyrillic | |
1 | utf16 | UTF -16 Unicode | |
4 | utf16le | UTF-16LE Unicode | |
#4 | cp1256 | Windows Arabic | |
1 | # #cp1257 | Windows Baltic | |
1 | ##utf32 | UTF-32 Unicode | |
4 | binary | Binary pseudo charset | |
1 | #geostd8 | GEOSTD8 Georgian | |
#cp932 | SJIS for Windows Japanese | cp932_japanese_ci | |
eucjpms | UJIS for Windows Japanese | #eucjpms_japanese_ci |
設定資料庫的字元集
當我們新建一個MySQL資料庫時,可以設定資料庫的預設字元集,這樣所有該資料庫中的表的字元集都將使用該字元集。具體操作步驟如下:
2.1 首先查看MySQL支援的字元集
mysql> SHOW CHARACTER SET;
2.2 在建立新的資料庫時,新增一個字元集設定
CREATE DATABASE new_db CHARACTER SET utf8;
或
The following sentence is rewritten: "Create a new database called 'new_db' with a default character set of utf8."
其中utf8為常用字元集之一。
設定 MySQL 表的字元集
為了確保表格可以正確的儲存和展示數據,我們需要為表格設定字元編碼。在 MySQL 中,表格的字元集可以透過在建立表格時進行設定。可以使用 ALTER 指令對已建立的表進行修改。
3.1 在建立表格時設定字元集
CREATE TABLE new_table (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL DEFAULT '',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
用於設定表的儲存引擎的是ENGINE=InnoDB,而用於設定表的預設字元集的是CHARSET=utf8。
3.2 修改表的字元集
ALTER TABLE old_table CONVERT TO CHARACTER SET utf8;
或
#ALTER TABLE old_table MODIFY COLUMN name VARCHAR(50) CHARACTER SET utf8;
其中,CONVERT TO指令用來修改表格的預設字元集,MODIFY COLUMN指令用來修改表中某一列的字元集。
設定 MySQL 連線的字元集
#在連接 MySQL 伺服器時,也可以設定操作的字元集。通常稱為「客戶端字元集」的字元集設定,指的是客戶端傳輸的資料所使用的字元集。
4.1 查看目前連接的字元集
mysql> SELECT @@character_set_connection;
4.2 修改連接的字元集
SET character_set_connection = utf8;
或
mysql --default-character-set=utf8 -u root -p
其中,SET指令可以修改連接的預設字元集,--default-character -set指令可以指定客戶端字元集。
其他的字元集設定
有些情況下,為了處理一些不太常見的資料儲存和轉換需求,可能需要啟用MySQL 的其他字元集設定。在這種情況下,可能需要以管理員權限修改MySQL的設定檔-my.cnf檔。修改方法如下:
5.1 找到my.cnf 檔案
在Linux中,my.cnf檔案通常儲存在/etc/my.cnf 或/etc/mysql/my.cnf 目錄下。
在Windows中,my.cnf檔案通常儲存在 MySQL 資料庫的安裝目錄下。
5.2 修改my.cnf 檔案
在my.cnf 檔案中加入下列語句:
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
其中,character_set_server指令用來設定列出來的字元集,init_connect指令用於在建立連線時自動設定字元集。
以上是mysql怎麼設定字符集的詳細內容。更多資訊請關注PHP中文網其他相關文章!