前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中文保存到数据库乱码问题彻底解决

Java中文保存到数据库乱码问题彻底解决

作者头像
心平气和
发布2021-04-01 17:03:23
2.6K0
发布2021-04-01 17:03:23
举报

一、背景

最近写一个程序从网站上爬一些股票数据,其中股票名称有中文信息,但保存到数据库一直是乱码。

其实这个问题应该是老生常谈了,网上搜索了一下好多是在客户端设置,即Java代码中设置连接字符串:

代码语言:javascript
复制
jdbc:mysql://127.0.0.1:3306/stock?useUnicode=true&characterEncoding=UTF-8

即加上useUnicode和characterEncoding两个参数;

还有就是设置编辑器的编码,在IDEA里设置文件编码格式,这个只影响代码中字符串常量的情况:

可在我的场景下上述方法依然无效。

二、问题定位

为了排除是不是代码问题,试了直接写字符串常量到数据库,代码如下:

代码语言:javascript
复制
 /**     * 写入到数据库     * @param str     */    private void writeToDb(String str){        try {            String connStr;
            connStr = "jdbc:mysql://127.0.0.1:3306/stock?useUnicode=true&characterEncoding=UTF-8";            Connection conn = DriverManager.getConnection(connStr, "root", "");            conn.setAutoCommit(false);            PreparedStatement pst = conn.prepareStatement("");
            String sql = "INSERT INTO test(str) VALUES ('" + str + " ')";            pst.addBatch(sql);            pst.executeBatch();            conn.commit();
            pst.close();            conn.close();
        }catch (Exception ex){
        }    }

直接调用:

代码语言:javascript
复制
writeToDb("中国平安");

发现还是乱码,初步可以排除客户端的问题,然后看服务端配置,执行以下SQL:

代码语言:javascript
复制
show GLOBAL variables like "%chara%";

结果如下:

原来是服务端编码设置问题,加上以下配置问题解决:

代码语言:javascript
复制
character_set_client=utf8character_set_server=utf8

三、总结

1、保证服务端编码正确

通过执行以下命令看结果,重点看character_set_client和character_set_server:

代码语言:javascript
复制
show GLOBAL variables like "%chara%";

如果不行,在my.ini配置文件加上配置,具体字符集看自己的场景:

代码语言:javascript
复制
character_set_client=utf8character_set_server=utf8

2、Java连接字符串:

代码语言:javascript
复制
jdbc:mysql://127.0.0.1:3306/stock?useUnicode=true&characterEncoding=UTF-8

注意字符集是UTF-8不是UTF8

3、设置IDE

这个因每个ID情况而定,主要解决常量字符串乱码的问题。

程序员如何提高解决问题的能力

Spring Cloud系列二:Ribbon

MyBatis源码分析四:动态Sql实现

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档