大家下午好/晚上好/早上好/白天好!最大程序:连接到数据库中的表,从 SQL 表中提取一行数据并将其传递给将数据发送到 WooCommerce REST API 的方法。
问题:我连接到数据库,执行查询,在控制台中出现“裂纹”,因此,向 API 发送数据是错误的
数据检索示例代码如下:
public class DatabaseConnector {
private static final String URL = "jdbc:mysql://DATABASE_IP:3306/default_db?useUnicode=true&characterEncoding=UTF-8"; // тут нейросетка посоветовала указать еще явную кодировку
private static final String USER = "USER";
private static final String PASSWORD = "PASSWORD";
public static void fetchAndProcessData() {
String query = "SELECT id, name, category " +
"FROM default_db.Promelec_Products " +
"WHERE REGEXP_REPLACE(name, '[[:space:]]', '') = name " +
"AND name NOT LIKE '% %'";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query)) {
while (rs.next()) { //тут начинаются танцы с бубном
String name = new String(rs.getBytes("name"), StandardCharsets.UTF_8);
String category = new String(rs.getBytes("category"), StandardCharsets.UTF_8);
System.out.println(name + " " + category);
ProductUploader.upload(name, category); //Отправляет данные в REST
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
俄语字母的控制台输出(在本例中为名称+类别):
140��1201 140��1201, ������������ �������� ��������� ������
结果,向API发送数据是歪的
数据库中的表本身配置为: 字符集:utf8mb4 排序规则:utf8mb4_unicode_ci 两列都是 VARCHAR
发送方法 100% 有效,因为初始化的字符串已正确发送到 API
现在,亲爱的专家,请注意问题!
如何正确从数据库中提取数据?
ps CSV - 我尝试过,设置 JVM 的相同欧芹或多或少是一种工作方法,但并非所有字母都能正常解码
输出显示变量,如“char%”;
- 变量名称、值
- 'character_set_client', 'utf8mb4'
- '字符集连接', 'utf8mb4'
- '字符集数据库','utf8mb4'
- '字符集文件系统','二进制'
- '字符集结果', 'utf8mb4'
- '字符集服务器', 'utf8mb4'
- '字符集系统', 'utf8'
- 'character_sets_dir','/usr/share/mysql/charsets/'