Windows 下 MySQL中文及emoji插入问题

出现的问题

MySQL下默认的utf8编码实际是3bite的编码
不能够处理中文及emoji,会出现报错。

解决方案

将数据库及表格的字符编码改成ut8mb4。

#展示MySQL支持的编码格式
show character set; 
# 查看变量的编码格式
show variables like '%char%';
#创建数据库并指定默认的编码格式,‘test’为数据库名
CREATE DATABASE test DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
#创建表,并指定默认的编码格式
CREATE TABLE zixun_title_feiai(
id int auto_increment primary key,#设置主键,自动增长
# MySQL的一行(row size)最大长度为65,535 bytes,超过后需要变量类型改成TEXT or BLOB
patient varchar(20),
zixun_url varchar(300),
title varchar(300),
disease varchar(300),
dialogue_num varchar(10),
lastest_date varchar(100),
download_time datetime,
#char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是: 
#char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)长度0~255字符
#在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)
doctor_zixun_url varchar(300),
#varchar 最大长度
doctor_page varchar(100)
#MySQL 8.0 本身要求一张表(table)的列数(column)不超过4096
#InnoDB引擎额外要求一张表(table)的列(column)数不超过1017
)ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;#指定该表的编码格式
#varchar(n)占用几个字节跟字符集有关系:

#字符类型若为gbk,每个字符占用2个字节

#字符类型若为utf8,每个字符最多占用3个字节

修改成功后查看编码

# 查看变量的编码格式
show variables like '%char%';
MySQL使用的字符编码

注意:

如果需要设置全局的默认编码,则需要修改my.ini文件(系统配置文件),一定要用Notepad++,或者其他文本编辑器进行修改。不要使用Windows自带的Notepad(记事本),因为Windows默认的是UTF8-BOOM格式,MySQL不匹配。会造成服务无法重启。

参考链接

[1] https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html
[2] https://dev.mysql.com/doc/refman/8.0/en/column-count-limit.html#row-size-limits
[3] https://blog.csdn.net/qq_35458793/article/details/90748779

你可能感兴趣的:(Windows 下 MySQL中文及emoji插入问题)