首先,我正在使用:Java 1.7.0_02MySQL 5.1.50ZendServer CE (if that matters)我用来从Java连接到MySQL的JDBC驱动程序是com.mysql.jdbc.Driver.与数据库的连接工作正常.我的连接字符串是:jdbc:mysql://localhost...
首先,我正在使用:
Java 1.7.0_02
MySQL 5.1.50
ZendServer CE (if that matters)
我用来从Java连接到MySQL的JDBC驱动程序是com.mysql.jdbc.Driver.与数据库的连接工作正常.
我的连接字符串是:
jdbc:mysql://localhost:3306/table
并试图解决我已经添加的问题
?useUnicode=true&characterEncoding=UTF-8
到连接字符串.
我正在使用Wikipedia转储,所有文本都是MediaWiki格式,我正在使用JWPL解析内容,这对我来说很漂亮,并且在从数据库中提取,解析和通过HTML显示我我失去了像’ – ‘和单引号这样的字符,而是取代地球而不是地球.
在经过一些测试后,我已经归结为在MySQL查询和处理Java中的字符串之间没有正确编码/解码字符,我得出了这个结论,因为数据库中的文本(存储为MEDIUMBLOB)有正确的字符,就像它应该的那样,以及在DB调用破坏/丢失字符(‘?????’而不是日文字符等)后,Java中字符串的立即输出.
我已经验证了System.getProperty(“file.encoding”);是UTF-8所以JVM应该在正确打印时对String进行编码(除非JVM的UTF-8> UTF-16> UTF-8转换有问题).
我还创建了一个带有UTF-8列的UTF-8表,并将数据移动到数据库中进行测试,但没有解决任何问题.另一个尝试修复是替换:
return result.getString("old_text");
它将结果集中的文本拉到:
return new String(result.getString("old_text").getBytes("utf8"), "utf8");
这给了我与前一个陈述相同的结果.
使用JDBC访问MySQL时是否可以避免这种字符数据丢失,如果没有,是否有办法处理字符并恢复正确的字符以便显示?两个和三个随机字符块代替标准标点符号类型打破了用户体验.
编辑
一个小小的注释,数据库中的数据很好 – 字符存在,所有字符都可见.访问日期thruogh phpMyAdmin返回具有正确编码字符的数据.问题出现在MySQL和Java之间,也许是JDBC.我正在寻找一个设置或一个解决方法(这是有效的,因为我试过的那些对我不起作用),这将防止丢失这些字符代码.
解决方法:
经过一些研究和阅读后,我找到了一个解决方案来解决我遇到的问题.我不能说为什么,但它似乎一直在将MEDIUMBLOB转换为Java中的String类型.
这就是我从结果中返回文本的方式:
if (result.next())
return result.getString("old_text");
else
return null;
我在过去没有做过很多关于JDBC的事情,也没有意识到有一个Blob类,所以我将代码更改为:
if (result.next()) {
Blob blob = result.getBlob("old_text");
InputStream is = blob.getBinaryStream();
byte[] bytes = new byte[is.available()];
is.read(bytes);
is.close();
return new String(bytes, "UTF-8");
}
else
return null;
而且效果很好.
本文标题为:java – 如何在使用JDBC从MySQL数据库中提取数据时避免丢失标点符号?
基础教程推荐
- Spring Cloud OAuth2实现自定义token返回格式 2023-01-29
- 基于Java实现二维码的生成和解析 2023-04-23
- Spring 与 JDK 线程池的简单使用示例详解 2023-05-14
- java实现后台返回base64图形编码 2023-01-08
- java中类与对象的使用详情 2022-11-29
- JSP实现在线考试与成绩评测 2023-08-02
- JDK源码白话解读之ThreadLocal篇 2022-10-24
- 在netty中使用native传输协议的方法 2022-11-16
- Spring Boot 防止接口恶意刷新和暴力请求的实现 2022-12-03
- spring boot Slf4j日志框架的体系结构详解 2022-11-08