经过我的不断摸索,在MySQL建表后,往表中的varchar(255)中输入中文时报错,大概是因为数据库的默认编码模式是latin1而不是utf8。所以其它博客就会叫你去修改my.ini配置文件里的信息,或者说在MySQL界面里设置,如下:
show variables like'%char%';
结果:
+--------------------------+-----------------------------------------------------------+
| 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/ |
+--------------------------+-----------------------------------------------------------+
当你 其中的Latin改为utf8就可以了,可是我都试过他们的方法修改my.ini配置文件里的信息,或者说在MySQL界面里设置(可以去博客里搜索),但是我试了都没有效果。后来我就用例外一种方法来解决:在MySQL中修改数据库和表的编码形式。
create database abcd DEFAULT CHARACTER SET utf8;
创建好表后可以通过如下代码查看结果:
show create database databasename;
//databasename为你创建数据库的名字
然后就可以创建新表了,输入中文了,这个数据库中的所有表都可以输入中文哦
如果不想创建新的数据库,可以只修改表的属性
/ /查看表的列的属性
show full columns from tablename;
alter table tablename change columnsname columnsnamee varchar(255)
character set utf8 collate utf8_unicode_ci not null default '';
//tablename:表名,columnsname:列名(注意这里要输入两个列名,应该是旧列名和新列名,一般情况下不改变列名,就直接输入两个一样的列名就可以了;然后再输入上面的代码,查看修改后的属性,就可以了;但是要注意哦这只能修改一个表的编码形式,再在这个数据库中建一个新表,他还是latinl 的编码形式,还得修改哦;而且在修改的时候要保证表是一个空表哦,没有数据。
在latin1中,每个字符只有一个字节长。在utf8中,一个字符可以由多个字节组成。因此,utf8具有比latin1更多的字符(并且它们具有的字符不一定由相同的字节/字节序列表示)。
但是我们的中文汉字是要2个字节还是3个字节哦,所有latin1就不能存储汉字啦。
皮一下!