MySQL 的UTF8字符编码 并不是真正的UTF8:
以前这样创建数据库和表:
创建数据库:
CREATE DATABASE `mydatabase`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
创建表:
CREATE TABLE IF NOT EXISTS t_table(
id INT UNSIGNED AUTO_INCREMENT,
column1 VARCHAR(20) NOT NULL,
column2 VARCHAR(500) NOT NULL,
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL 后来发布的 utf8mb4 编码 才是真正的UTF8字符编码:
所以应该使用下面的方式创建数据库和表:
创建数据库:
CREATE DATABASE `mydatabase`
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
创建表:
CREATE TABLE IF NOT EXISTS t_table(
id INT UNSIGNED AUTO_INCREMENT,
column1 VARCHAR(20) NOT NULL,
column2 VARCHAR(500) NOT NULL,
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
具体原因参考链接: