如果直接去操作数据库向里面insert记录时,可以插入中文,并能够正确显示,但是在eclipse中通过jdbc连接数据库并往数据库中写东西的时候也能写进去,不报错,但是进数据库查看时,中文显示问号乱码,求大神指点。。。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
问题描述: 您在直接操作数据库插入中文记录时能够正常显示,但通过Eclipse使用JDBC连接数据库插入中文数据后,虽然插入过程不报错,但在数据库中查看时中文显示为问号乱码。
原因分析:
解决步骤:
useUnicode=true&characterEncoding=UTF-8
来指定使用UTF-8编码。String url = "jdbc:mysql://localhost:3306/yourDB?useUnicode=true&characterEncoding=UTF-8";
CREATE TABLE your_table (
column_name NVARCHAR(50) -- 使用NVARCHAR代替VARCHAR
);
INSERT INTO your_table (column_name) VALUES (N'你的中文内容'); -- 注意插入时使用N前缀
示例代码调整: 在Java代码中的JDBC插入部分,确保使用PreparedStatement,并且如果适用,显式地指定参数类型为Unicode格式。
String sql = "INSERT INTO your_table (column_name) VALUES (?)";
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "你的中文内容"); // Java默认使用Unicode,一般无需额外处理
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
注意事项:
通过上述步骤,您可以解决Eclipse通过JDBC向数据库插入中文时出现的乱码问题。