查看數據庫編碼的命令:show variables like "character%";
mysql> show variables like "character%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
有關上面八個character_set相關的變量表明的意思:html
1. character_set_client
主要用來設置客戶端使用的字符集。
2. character_set_connection
主要用來設置鏈接數據庫時的字符集,若是程序中沒有指明鏈接數據庫使用的字符集類型則按照這個字符集設置。
3. character_set_database
主要用來設置默認建立數據庫的編碼格式,若是在建立數據庫時沒有設置編碼格式,就按照這個格式設置。
4. character_set_filesystem
文件系統的編碼格式,吧操做系統上面的文件名轉化成此字符集,即把character_set_client轉換character_set_filesystem,默認binary不作任何轉換。
5. character_set_results
數據庫給客戶端返回時使用的編碼格式,若是沒有指明,使用服務器默認的編碼格式。
6. character_set_server
服務器安裝時指定的默認編碼格式,這個變量建議由系統本身管理,不要認爲指定。
7. character_set_system
數據庫系統使用的編碼格式,這個值一直時utf8,不須要設置,它是存儲系統元數據的編碼格式。
8. character_sets_dir
這個變量是字符集安裝的目錄。python
修改指定編碼爲utf-8,在/etc/mysql/my.cnf中添加如下內容,添加完後重啓mysql服務(sudo systemctl restart mysql)。mysql
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8
已經建立的表裏面的字符集尚未被改過來。sql
mysql> show create table tbl_dept; +----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | tbl_dept | CREATE TABLE `tbl_dept` ( `dept_id` int(11) NOT NULL AUTO_INCREMENT, `dept_name` varchar(255) NOT NULL, PRIMARY KEY (`dept_id`) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1 | +----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
mysql> alter table tbl_dept convert to character set utf8;數據庫
Query OK, 6 rows affected (0.18 sec)
Records: 6 Duplicates: 0 Warnings: 0服務器
mysql>
mysql> show create table tbl_dept;
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tbl_dept | CREATE TABLE `tbl_dept` (
`dept_id` int(11) NOT NULL AUTO_INCREMENT,
`dept_name` varchar(255) NOT NULL,
PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)編碼
須要使用如下修改語句url
查看錶編碼
show create table tbl_dept;
修改表編碼
alter table tbl_dept convert to character set utf8;spa
參考:https://blog.csdn.net/sun8112133/article/details/79921734操作系統
https://dev.mysql.com/doc/refman/5.7/en/faqs-cjk.html