解决mysql中文乱码的方法

向mysql 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','男','1995-10-08',6000); 出现乱码,数据库里数据显示如下:


可以使用语句  show variables like 'character%'; 来查看当前数据库的相关编码集,如下:


从上图中可以看到 MySQL 有六处使用了字符集,分别为:client 、connection、database、results、server 、system。其中与服务器端相关:database、server、system(永远无法修改,就是utf-8);与客户端相关:connection、client、results 。
 
client为客户端使用的字符集。
connection为连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型则按照服务器端默认的字符集设置。
database为数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
results为数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。
server为服务器安装时指定的默认字符集设定。
system
为数据库系统使用的字符集设定。

分析查询的数据库编码集结果,知道客户端设置均为utf8编码,没有问题。
jsp页面头信息为:<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>,也为utf8 编码,无误。
因此问题出在数据库服务器设置端。

到mysql安装路径(5.5版本)查看my.ini文件配置,如下:
[client]
port=3306
[mysql]
default-character-set=utf8
......

[mysqld]

character-set-server=utf8
各项设置貌似也没问题。

经尝试,在 [mysqld]下增加一行

collation-server=utf8_general_ci

重启mysql:
net stop ysql

net start mysql
登录数据库,重新查询: show variables like 'character%'; ,结果如下:


各项编码集设置正常。
重新插入带中文的数据记录,中文能正常显示,问题解决。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值