mysql输入中文报错:ERROR 1366 (HY000): Incorrect string value: '\xE9\x83\x9D\xE7\x8E\x89...'

mysql输入中文报错:ERROR 1366 (HY000): Incorrect string value: '\xE9\x83\x9D\xE7\x8E\x89…'解决方法

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;

  1. 查询表的属性,示例代码:
/ /首先查看表teble02的列的属性
show full columns from table02;

  1. 结果如下(由图可知不能使用中文字符):
    在这里插入图片描述
  2. 修改表的列属性为utf8:
alter table table02 change name name varchar(255) character set utf8 collate utf8_unicode_ci not null default '';
  1. 结果如下(由图可知此时可以使用中文字符):
    在这里插入图片描述

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公众号:菜鸟资源分享

猜你喜欢

转载自blog.csdn.net/goog_man/article/details/102683676