关于mysql数据库和JDBC中文乱码的思考

Posted codezyh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于mysql数据库和JDBC中文乱码的思考相关的知识,希望对你有一定的参考价值。

 

出现的问题:

1 通过JDBC向mysql数据库进行中文数据的插入和查询时出现???

技术图片

 

 

出现这种问题的原因在于mysql数据库的默认编码方式和java的默认编码方式不一致解决方法如下:

(1)在mysql中执行:SHOW VARIABLES LIKE ‘%character%‘;

技术图片

 

 

会发现这里的默认编码方式不是utf-8,将其改为utf-8即可。

修改的方式有很多但是通过配置文件进行修改以后就可以避免对这个问题再次进行处理了。

(2)首先停止mysql服务,然后找到mysql安装目录下的my.ini配置文件增加两行配置即可:

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8

(3)然后重新启动mysql服务,net start mysql;再次执行SHOW VARIABLES LIKE ‘%character%‘;

技术图片

 

 已经修改完成。

(4)再次通过JDBC进行插入操作,然后查询结果如下:

技术图片

 

 现在插入就是正常的(第一个问题已经解决)。

2 编写JSP用JDBC从数据库读取中文时出现乱码???

通过1使用JDBC向数据库插入数据时已经不会出现问题,可知出现2问题是java编码的问题

技术图片

 

        技术图片

 

结果:技术图片

 

修改各种配置文件都没有效果之后,发现是jsp内置对象request内置对象的问题,只需要对其进行设置即可:

 

<%request.setCharacterEncoding("utf-8");%>

但是要注意一点:这句话要在调用request内置对象之前,否则设置无效。

 技术图片

 

以上是关于关于mysql数据库和JDBC中文乱码的思考的主要内容,如果未能解决你的问题,请参考以下文章

关于JAVA写入MYSQL中文数据乱码问题的处理

关于vba读取mysql数据库中文乱码的问题

数据库之-------Mysql(JDBC实现&解决存储乱码问题)

关于使用sqoop export 导出hdfs数据到mysql中文乱码问题

MySQL设置时区和默认编码

关于Java的jdbc中 DriverManager.registerDriver(driver); //注册驱动 有没有必要写的思考