MariaDB をデフォルトの文字セット UTF-8 に設定しました。Blue Box Blog Character Set Hellによると、「é」などの認識されないアクセント付き文字から問題を解決してくれる設定です。
ただし、一部の結果を取得できません
SELECT title FROM tablename WHERE title = '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 の前は、データベースの最初のセットアップはデフォルトの Character Set である latin1_swedish_ci を使用していました。私のフィールド 'tablename' datatype= VARBINARY () を使用すると、認識されないアクセント付きを解決できます
SELECT * FROM tablename WHERE CONVERT(title USING utf8) = 'sometext'
ただし、データベースには 1,000 万行を超える行があるためです。「タイトル」フィールド全体でCONVERT関数を使用すると、SQL クエリと Java プログラムの実行が非常に遅くなります。