You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法修改MySQL latin1配置时如何通过JDBC正确读取中文数据

解决方案

可通过JDBC连接参数配置+手动编码转换的组合方式解决,无需修改库表原有配置:

1. 调整JDBC连接参数

在JDBC连接URL中新增以下参数,关闭JDBC默认的自动字符集转换逻辑:

useUnicode=false&characterEncoding=latin1

完整URL示例:

jdbc:mysql://<数据库地址>:<端口>/<库名>?useUnicode=false&characterEncoding=latin1

2. 手动做编码转换

从ResultSet中读取到字符串后,手动将Latin1编码的字节转回中文写入时使用的原始编码(通常为UTF-8/GBK):

// 读取结果集中的原始字符串
String rawStr = resultSet.getString("目标字段名");
// 先按Latin1解码拿到原始字节,再用写入时的编码转回正确中文
String correctStr = new String(rawStr.getBytes("ISO-8859-1"), "UTF-8");

若你写入中文时使用的是GBK编码,将上述代码中的UTF-8替换为GBK即可。

原理解释

乱码的本质是中文写入时被按Latin1规则存储,JDBC默认读取时会自动用服务端或连接指定的非Latin1编码做转换,导致字节信息匹配错误。通过指定JDBC按Latin1原封不动读取存储的字节,再手动转成写入时用的编码,即可还原出正确的中文内容。

内容的提问来源于stack exchange,提问作者R Nanthak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:54:06