如何通过 JDBC 正确地将 UTF-8 字符串插入 MySQL
问题陈述:
使用 JDBC 接口将 UTF-8 字符串插入 MySQL 数据库时,字符显示为损坏或不可读的符号。
预期字符串: Апарати
实际结果: ??????
初始故障排除:
<code class="java">Class.forName("com.mysql.jdbc.Driver").newInstance(); String dbPath = String.format( "jdbc:mysql://%s:%d/%s?user=%s&password=%s&characterEncoding=utf-8&" + "&useUnicode=true", ci.host, ci.port, ci.dbName, ci.user, ci.password); conn = java.sql.DriverManager.getConnection(dbPath);</code>
其他故障排除:
另外还采取了这些步骤:
从代码中删除了以下行:
<code class="java">query = "set character set utf8"; stat.execute(query);</code>
解决方案:
看来Java代码和MySQL表数据之间的差异是由于字符集不一致造成的。删除 Java 代码中的字符集设置后,该问题得到解决。
将 Java 代码中使用的 MySQL 命令与命令提示符中的类似命令进行比较,发现了细微的差异:
<code class="java">String query = "insert into clt" + " (id, text) values (?, ?)";</code>
<code class="bash">mysql> insert into clt (id, text) values (12656697, "Апарати");</code>
在 Java 代码中,创建表语句中省略了字符集 utf8 后缀。Java 代码和直接 MySQL 命令之间的这种差异导致字符集处理不匹配。
结论:
使用 JDBC 接口将 UTF-8 字符串插入 MySQL 时,必须确保 Java 代码和数据库配置之间的字符集设置保持一致。这确保了字符串被正确处理并存储在数据库中。
以上是为什么使用 JDBC 插入 MySQL 时我的 UTF-8 字符串显示为损坏的字符?的详细内容。更多信息请关注PHP中文网其他相关文章!