有時(shí)候我們?cè)谑褂胢ysql數(shù)據(jù)庫(kù)的時(shí)候會(huì)發(fā)現(xiàn),無(wú)論是使用命令行還是在程序中插入中文字符,都會(huì)遇到失敗的情況,甚至出現(xiàn)亂碼。這是由于mysql默認(rèn)使用的是latin1字符集,不支持中文字符。為了解決這個(gè)問(wèn)題,我們需要進(jìn)行一些設(shè)置和配置。
首先,我們需要確保mysql數(shù)據(jù)庫(kù)已經(jīng)安裝了utf8字符集,可以通過(guò)命令行輸入以下命令確認(rèn):
mysql>show variables like 'character%'; +--------------------------+--------------------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.7.23-macos10.13-x86_64/share/charsets/ | +--------------------------+--------------------------------------------------------+ 8 rows in set (0.00 sec)
我們可以看到,mysql的默認(rèn)字符集是utf8mb4。
接下來(lái),我們需要在創(chuàng)建表時(shí)指定字符集。例如,在創(chuàng)建一個(gè)名為mytable的表時(shí),我們可以使用以下語(yǔ)句:
CREATE TABLE mytable ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL ) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
這里指定了表的字符集和校對(duì)規(guī)則為utf8mb4_general_ci。
最后,在插入數(shù)據(jù)時(shí),我們需要使用utf8編碼格式,可以通過(guò)以下語(yǔ)句實(shí)現(xiàn):
SET NAMES utf8mb4;
這樣,我們就可以在mysql數(shù)據(jù)庫(kù)中插入中文字符了。