首页  >  文章  >  数据库  >  尽管在 JDBC 连接中设置了 `characterEncoding=utf-8`,为什么我的西里尔字符串在 MySQL 数据库中显示为 \"?????????\" ?

尽管在 JDBC 连接中设置了 `characterEncoding=utf-8`,为什么我的西里尔字符串在 MySQL 数据库中显示为 \"?????????\" ?

Susan Sarandon
Susan Sarandon原创
2024-11-01 22:38:02970浏览

Why are my Cyrillic strings appearing as

如何使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn