我在 MySQL 中使用 java 从包含 utf-8 格式数据的表中进行选择时遇到问题,在 WHERE
子句中我需要比较列值是否等于 java String 但它们不匹配
"Select age from student where name = '"+stringVariable+"';"
stringVariable 有时可以是阿拉伯语,所以在这种情况下它们不匹配
数据库是 utf8mb4,java 和数据库之间的连接也是 utf_8,我在插入或选择数据时没有问题,但在比较时出现问题
我试着像这样转换字符串,但它也不匹配
byte[] b = stringVariable.getBytes("UTF-8");
String str = new String(b,"UTF-8");
那么有人对此有任何解决方案吗?!
提前致谢
最佳答案
使用参数。然后,驱动程序应根据连接属性对它们进行正确编码。
PreparedStatement statement = connection.prepareStatement(
"select age from student where name = ?");
statement.setString(1, stringVariable);
此外,这也正确地转义了特殊的 SQL 字符(如单引号)。
关于java - 如何使用java比较mysql查询中的utf8文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851636/