• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

解决MySQL数据库插入中文数据的问题

开发技术 开发技术 4小时前 1次浏览

请认真看完,以下这篇文章基本上能够解决大家关于MySQL数据库插入中文的问题了

1、首先我们查看mysql数据库服务器,客户端,数据库连接,文件系统等的字符编码
show variables like ‘%char%’;
+————————–+————————————-+——
| Variable_name | Value |……
+————————–+————————————-+——
| character_set_client | utf8 |…… — 客户端字符集
| character_set_connection | utf8 |……
| character_set_database | latin1|…… — 数据库字符集
| character_set_filesystem | binary |……
| character_set_results | utf8 |……
| character_set_server | latin1|…… — 服务器字符集
| character_set_system | utf8 |……
| character_sets_dir | D:MySQL Server 5.0sharecharsets |……
+————————–+————————————-+——

默认安装完mysql数据库时,服务器和数据库使用的编码是latinn1编码格式。

2、查看数据库的创建语句。以默认的数据库mysql为例

show create database mysql

可以发现其的default character set默认字符编码格式是latin1。由此可以看出,缺省时会自动使用latin1

所以我们需要在创建数据库时指定默认的编码格式

create database 数据库名 CHARACTER SET utf8 COLLATE utf8_general_ci;

修改已创建的数据库的编码

alter database 数据库表名 CHARACTER SET utf8 COLLATE utf8_general_ci;

3、查看数据库中匹配到的表的编码格式。

show table status from 数据库名 like ‘pattern/匹配模式’;

查看数据库中所有表的编码格式
show table status from mysql like ‘%%’;

4、修改表的默认编码格式。有两种方法

alter table 表名 character set utf8 COLLATE utf8_general_ci;
alter table 表名 convert to character set utf8;
第一种是仅仅修改表的字符编码,而字段的字符编码还是latin1编码格式,这种改变没有意义!!!

***可以查看数据表中所有列的字符编码,就可以发现字段的字符编码是否发生改变。show full columns from 表名;

第二种会将表和字段的编码都更改为utf8编码格式。

5、中文乱码问题得到解决的,但是数据库里那么多表,我们总不可能一个表一个表的进行修改吧,所以我们要使用存储过程,

加动态sql语句的方式使用循环自动修改数据库内的所有数据表的编码格式。

注意:如果修改完后中文存储还是乱码。将连接数据库的连接后面指定编码格式为utf8


程序员灯塔
转载请注明原文链接:解决MySQL数据库插入中文数据的问题
喜欢 (0)