mysql数据库的默认编码方式是latin1, 在mysql中存储和显示中文时会产生乱码(也可以建库时指定),必须要更改默认的编码方式为utf8 或 utf8mb4。(以下以utf8mb4为例。)
环境
MySQL 5.6
更改
临时改(不重启MySQL)
/*数据库客户端的编码*/
set character_set_client = utf8mb4;
/*建立连接使用的编码*/
set character_set_connection = utf8mb4;
/*数据库的编码*/
set character_set_database = utf8mb4;
/*结果集的编码*/
set character_set_results = utf8mb4;
/*数据库服务器的编码*/
set character_set_server=utf8mb4;
更改数据库的编码
就是修改mysql的my.cnf文件中的编码键值,
#服务器级
[client]
default-character-set = utf8mb4
#数据库级别
[mysql]
character_set_server = utf8mb4
[mysql]
character_set_server = utf8mb4
创建数据库指定编码
在创建数据库时指定编码:
mysql> create database db_name character set utf8mb4 collate utf8mb4_general_ci;
修改库的编码
语法:alter database 库名 default character set 编码;
mysql> alter database db_name default character set utf8mb4;
更改某个表的编码
语法:alter table 表名 convert to character set 编码;
mysql> alter table table_name convert to character set utf8mb4;
在创建时若不指定编码方式,则默认继承上一级的编码方式。
查看
查看MySQL所支持的编码
mysql> show charset;
查看表的编码/建表SQL
mysql> show create table table_name;
查看表中所有列的编码
mysql> SHOW FULL COLUMNS FROM table_name;
查看库编码/建库SQL
mysql> show create database db_name\G
*************************** 1. row ***************************
Database: db_name
Create Database: CREATE DATABASE `db_name` /*!40100 DEFAULT CHARACTER SET utf8mb4 */
1 row in set (0.00 sec)
查看数据库当前有的编码
mysql> show variables like '%char%';