Java使用JDBC存储中文为问号问题

Java使用JDBC操作Mysql数据库存储中文为?

以前项目中都是使用Spring框架,最近突然需要写个Java程序,使用JDBC来操作数据库,居然发现不会了…存储中文总是显示???

Mysql数据库配置

创建的数据库就是UTF-8编码的
在这里插入图片描述

Eclipse文件编码设置

按照网上说的项目属性中的文件编码也设置成UTF-8
在这里插入图片描述

数据库连接代码

使用JDBC需要引入“mysql-connector-java-5.1.34.jar”库文件,连接代码如下:

try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/hz_db?useUnicode=true&characterEncoding=UTF-8", "root", "root");
			stmt = conn.createStatement();
			if (conn.isClosed())
				System.out.println("Failed to connect to database.");
			else
				System.out.println("Database connected.");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception ex) {
			ex.printStackTrace();
		}

连接url中也设置characterEncoding=UTF-8了,为什么不起作用,但是读数据库时发现中文是正常的。
再仔细检查下url,突然发现了问题:

jdbc:mysql://127.0.0.1:3306/hz_db?useUnicode=true&characterEncoding=UTF-8

中间有个“& amp;”,这个url是直接从原来的xml配置文件copy过来的,而xml文件规定&必须转义为“& amp;”,但是我们这里直接使用就得替换为正常的&了。最终url如下:

jdbc:mysql://127.0.0.1:3306/hz_db?useUnicode=true&characterEncoding=UTF-8

这次终于中文写入正常了,看来对于程序员来说,copy需谨慎啊!!!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值