我已将 MariaDB 设置为默认字符集 UTF-8。根据Blue Box Blog Character Set Hell的说法,该设置将使我摆脱无法识别的重音字符(如“é”)的问题。
但是,我无法得到一些结果
SELECT title FROM tablename WHERE title = 'sometext'
其中sometext不需要有重音字符。
是否有处理 utf8 字符集的独特方法?因为它看起来无法识别 java 中的字符串。
在 Java 代码中
String query = "SELECT title FROM tablename WHERE title=?";
PreparedStatement pState = conn.getPreparedStatement(query);
ResultSet result;
String textResult = null;
pState.setString(1, "sométéxt");
result = pState.executeQuery();
if(result.next())
textResult= result.getString(1);
System.out.println(textResult);
输出:
null
其他方法
1)
String query = "SELECT title FROM tablename WHERE CONVERT(title USING utf8)=?";
2)
String query = "SELECT title FROM tablename WHERE title=?";
byte[] req = "sométéxt".getBytes("UTF-8");
pState.setBytes(1,req);
输出
null
Char Set=utf8 之前面临的问题
在 Character Set=utf8 之前,我对数据库的第一次设置是使用默认字符集 latin1_swedish_ci。使用我的字段 'tablename' datatype= VARBINARY (),可以解决无法识别的重音
SELECT * FROM tablename WHERE CONVERT(title USING utf8) = 'sometext'
但是,因为我的数据库有超过 1000 万行。在整个 'title' 字段上使用CONVERT函数会使 SQL 查询和 Java 程序运行非常缓慢。