ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-11-23 13:36:20  阅读:141  来源: 互联网

标签:编码 set utf8 数据库 character 插入 MySQL 格式


请认真看完,以下这篇文章基本上能够解决大家关于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.0\share\charsets\ |......
+--------------------------+-------------------------------------+------

默认安装完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

标签:编码,set,utf8,数据库,character,插入,MySQL,格式
来源: https://www.cnblogs.com/zhouyu2156/p/15592746.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有