登录
首页
专栏
问答
沙龙
快讯
团队主页
开发者手册
智能钛AI
在线学习中心
TVP
返回腾讯云官网
mysql是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况。下面就来介绍一下如何彻底解决数据库中文乱码情况。
1、中文乱码
1.1、中文乱码
无法插入中文字符:
1.2、查看表字符编码
我们可以看到表的默认字符集是latin1.
所以我们在创建表的时候就需要指定表的字符集:
这样在Linux里面可以访问并且可以插入与访问这个表了。
1.3、数据库与 *** 作系统编码
虽然在服务器端可以显示中文正常,但是在客户端可能会显示乱码。因为我们的服务器是UTF8。
而且数据库的编码也存在问题。
这里我们可以看character_sert_database与character_set_server的字符集都是latin1.那么在mysql数据库中,server,database,table的字符集都默认是latin1.下面我们就来看看如何解决mysql乱码情况。
2、mysql设置变量的范围
2.1、session范围
查看数据库编码:
修改字符编码:
我们可以看到字符集已经修改成都是utf8了。但是这里有一个问题,那就是我们重新打开一个命令窗口然后查看数据编码就会出现下面的画面:
jsp读取数据乱码原因如下:1、JSP连接数据库语句指定的编码不正确
解决方案:在JSP连接数据库的语句中,带上useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
2、JSP页面没有指定数据提交的编码,就会造成乱码:
解决方案:这种乱码的情况,只需在页面开头加上request.setCharacterEncoding("GBK")指定提交的即可。
--查看mysql当前编码方式:show variables like 'character%'
--修改编码方式:
set names utf8
set character_set_client=utf8
set character_set_connection=utf8
set character_set_database=utf8
set character_set_results=utf8
set character_set_server=utf8
--查库编码:
use 库名
show variables like 'character_set_database'
--修改:
alter database 库名 CHARACTER SET utf8
--查表编码:
show create table 表名
--修改:
alter table 表名 convert to character set utf8
--查字段编码:
show 字段名 columns from 表名
--修改:
ALTER TABLE '表名' CHANGE `字段名` `字段名` VARCHAR(36) CHARACTER SET utf8 NOT NULL
--但是以上都很麻烦,建议楼主在建表时定义该表的编码方式
--如一个建表语句:
create table program(
sid int unsigned not null primary key auto_increment,
name char(20) not null,
age tinyint,
gender enum('M','F')
)engine=innodb default charset=utf8
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)