如何使用 JDBC 为 MySQL 正确编码 UTF-8 字符串
简介
何时通过 JDBC 使用 MySQL 时,了解如何正确编码 UTF-8 字符串以确保数据完整性并避免字符损坏至关重要。本文解决了错误的 UTF-8 编码导致 MySQL 出现乱码的常见问题。
问题陈述
显示使用 JDBC 插入 MySQL 表的行字符不正确,显示“?????????”而不是预期的西里尔文字。尽管在连接字符串中设置了“characterEncoding=utf-8”并执行 SQL 语句设置字符集,但该问题仍然存在。
MySQL 配置
解决该问题,验证 MySQL 配置设置至关重要。执行以下命令检查字符编码和排序规则设置:
show variables like 'character%'; show variables like 'collation%';
JDBC 连接配置
确保 JDBC 连接字符串包含正确的字符编码和 Unicode设置:
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8","user","passwd");
字符集管理的SQL语句
一般不需要执行SQL语句来显式设置字符集和编码。默认情况下,MySQL 使用通过 my.cnf 或 my.ini 配置的设置。然而,在某些情况下,您可能需要执行以下语句:
<code class="sql">SET NAMES 'utf8'; SET CHARACTER SET 'utf8';</code>
数据库表定义
确保数据库表使用正确的字符进行定义设置和编码:
<code class="sql">CREATE TABLE clt ( id bigint NOT NULL, text varchar(50) NOT NULL ) DEFAULT CHARACTER SET utf8;</code>
剥离不必要的 SQL 语句
提供的示例代码不必要地执行 SQL 语句来设置字符集。删除以下语句可以解决该问题:
<code class="sql">query = "set character set utf8"; stat.execute(query);</code>
数据库端配置
最后一步,验证数据库端配置是否与 JDBC 和代码匹配设置。这包括修改 my.cnf 或 my.ini 以设置适当的字符集服务器和字符集文件系统参数。
通过遵循这些准则,您可以确保 MySQL 中准确的 UTF-8 字符串处理通过JDBC连接数据库,防止乱码,保持数据完整性。
以上是尽管在 JDBC 连接中设置了 `characterEncoding=utf-8`,为什么我的西里尔字符串在 MySQL 数据库中显示为 \'?????????\' ?的详细内容。更多信息请关注PHP中文网其他相关文章!