mysql输入中文报错:ERROR 1366 (HY000): Incorrect string value: '\xE9\x83\x9D\xE7\x8E\x89…'解决方法
强烈建议在创建数据库和创建表时就设置好数据库的编码格式。
一、直接修改配置文件方法:
推荐此方法,比较我们现在主要的目的是解决这个编码问题,当然有时间可以查看后面通过命令行修改编码的方法。
在安装目录找到配置文件my.in文件,修改里面的两个字符即可。
default-character-set=gbk 客户端编码设置
character-set-server=utf8 服务器端编码设置
二、命令行中修改相关编码方法:
01、MySQL查询代码:
输入代码:
show variables like'%char%';
结果:
+--------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.21-macos10.13-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+
看到是gbk和latin1说明不支持中文,所以需要修改字符类型
当结果为一下示例时就支持中文字符了:
+--------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.21-macos10.13-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+
小小科普:
在latin1中,每个字符只有一个字节长。在utf8中,一个字符可以由多个字节组成。因此,utf8具有比latin1更多的字符(并且它们具有的字符不一定由相同的字节/字节序列表示)。但是我们的中文汉字是要2个字节还是3个字节哦,所有latin1就不能存储汉字啦。
02、在创建数据库时就声明字符类型为utf8
优点:一劳永逸,在创建数据库时就设置为utf8格式,以后再次数据库下创建表时以及添加表数据时都不用担心中文字符问题。
代码示例:
CCREATE database 数据库名字 DEFAULT CHARACTER SET utf8;
//此处以test01数据库为例
查看是否设置成功:
此时在数据库test01下新建表和插入数据时输入中文不会提示任何错误。
03、已有数据库和数据表修改为utf8格式
适用场景:适用于某一现有的数据表,但是仅仅只能修改当前表的字符格式,在此数据库下创建新表时还需要修改字符格式为utf8;
- 查询表的属性,示例代码:
/ /首先查看表teble02的列的属性
show full columns from table02;
- 结果如下(由图可知不能使用中文字符):
- 修改表的列属性为utf8:
alter table table02 change name name varchar(255) character set utf8 collate utf8_unicode_ci not null default '';
- 结果如下(由图可知此时可以使用中文字符):
04、在创建数据表时设置为utf8格式
在创建数据表的时候就将其设置为utf8格式。
以创建数据表:app为例,代码如下:
create table app(
id int not null auto_increment,
name varchar(100) not null,
age int null,
primary key(id)
)engine = InnoDB default charset=utf8;
更多绿色、pj资源请关注wx公众号:菜鸟资源分享
更多绿色、pj资源请关注wx公众号:菜鸟资源分享
更多绿色、pj资源请关注wx公众号:菜鸟资源分享
更多绿色、pj资源请关注wx公众号:菜鸟资源分享