【问题标题】:Unicode characters saved as � using JDBC, but saved correctly using phpMyAdminUnicode 字符使用 JDBC 保存为 �,但使用 phpMyAdmin 正确保存
【发布时间】:2017-04-11 12:10:42
【问题描述】:

这是我创建连接的方式:

Class.forName("com.mysql.jdbc.Driver");
Properties properties = new Properties();
properties.setProperty("user", "root");
properties.setProperty("password", "PASSWORD");
properties.setProperty("useSSL", "false");
properties.setProperty("autoReconnect", "true");
properties.setProperty("useUnicode", "true");
properties.setProperty("characterEncoding", "UTF-8");
Connection connection =  DriverManager.getConnection("jdbc:mysql://localhost/coolpoop", properties);

PreparedStatement statement = connection.prepareStatement("SET NAMES 'utf8'");
statement.execute();
statement = connection.prepareStatement("SET CHARACTER SET utf8");
statement.execute();

表:

插入:

PreparedStatement state = Mysql.conn().prepareStatement("insert into contents(campaignId, site_id, original_article_id, title, content) values(-1, -1, -1, ?, ?)");
state.setString(1, "acbdąčęėįšųū");
state.setString(2, "acbdąčęėįšųū");
state.execute();

结果:

怎么了?

编辑1: 如果我通过 phpMyAdmin 插入,一切都很好:

【问题讨论】:

  • 你的数据库编码是什么?可以通过 db 客户端插入 UTF-8 符号吗?
  • @BorysZibrov 检查 EDIT1。没有检查数据库编码,但我怀疑应该没问题,如果我可以通过 phpMyAdmin 插入
  • 是的,那么 db 就可以了,谢谢
  • 您的 .java 源文件是否使用 UTF-8 编码保存?
  • 戈德,你是对的!谢谢大佬。

标签: sql jdbc unicode utf-8 utf8mb4


【解决方案1】:

在某些情况下,Java 开发工具(例如 Eclipse)对 Java 源文件使用Cp1252(又名windows-1252)的默认字符编码。使用 Unicode 字符时,这可能会导致奇怪的编码问题,因为源文件编码会影响

  1. 如何解释字符串文字,以及
  2. 从 IDE 中运行项目时 JVM 使用的默认字符集。

在这种情况下,快速解决方法是将源文件编码更改为UTF-8

【讨论】:

    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2019-01-29
    相关资源
    最近更新 更多