java 数据库数据乱码_说说Java程序和数据库交互的乱码解决

本文详细介绍了Java程序在与MySQL数据库交互时遇到的乱码问题及其解决方案,包括写入数据时的乱码、读取数据时的乱码、通过IP连接数据库的权限问题以及JDBC-ODBC桥接方式的乱码处理。通过修改数据库和表的字符集、调整MySQL配置文件、URL参数设置以及处理数据转换等方式,可以有效解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文就本人遇到的问题进行讲解

1.通过jdbc直连方式,连接Mysql数据库,从程序向数据库中写入数据出现的乱码解决方案。

当通过程序向Student表中写入一条数据时,写入数据库的内容会产生乱码。

如下图

1fdb29092b710960d5cb81e0671317b2.png

解决方案:

1。创建数据库的时候:

CREATE   DATABASE   `Db`

CHARACTER   SET   'utf8 '

COLLATE   'utf8_general_ci ';

2.建表的时候:

CREATE   TABLE   `TableA`   (

`ID`   varchar(40)   NOT   NULL   default   ' ',

`UserID`   varchar(40)   NOT   NULL   default   ' ',  )

ENGINE=InnoDB   DEFAULT   CHARSET=utf8;

但是本人感觉关系不是很大,不过可以作为一种尝试手段。

3.该方案行之有效,就是修改Mysql安装目录的配置文件

a6fea9d0bca7e50498b95bc0d22ca358.png

需要修改my.ini中两个位置的编码,

第一处

7dfde4d6a38fd92f6c034053a1aa6a1e.png

第二处:

d76219d91f2e520fdadf3bdea0ec8a4e.png

设置后,通过命令重启服务

66c5b5bf43049cb40296d39dd731e3d9.png

最终问题解决。

2.如果是通过jdbc从mysql数据库读取数据出现乱码,但是数据库中数据本身并没有出现乱码,那么可以使用在url中加参数的解决方案。

Url写法如下:

jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8

3.如果将url中的localhost换成IP地址,出现如下问题:

报错:1130-host ... is not allowed to connect to this MySql server

解决方法:

1。 改表法。

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql"数据库里的"user"表里的"host"项,从"localhost"改称"%"

mysql -u root -pvmwaremysql>use mysql;

mysql>update user set host = '%' where user = 'root';

刷新授权 ,该行代码必须有。。FLUSH   PRIVILEGES;

4.JDBC-ODBC桥连方式从数据库中读取数据出现乱码解决方案

不要直接读取,可以使用如下方式转换读取,问题解决

Stringstuname=new String(rs.getBytes(2),"utf-16le");

结语:JDBC和数据库交互产生乱码是开发中经常遇到的棘手问题,希望这里的总结可以帮助到您。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值