like '%~%'を使って全文検索を行おうとしたのですが、
ローカルのTomcat 5.5.17とMySQL 5.0.45では正常に動作するものの、
レンタルサーバ上(www.hostjava.netのPrivate Tomcatコースです)で動かすと、
2バイト文字の検索で結果が返ってきません。1バイト文字は正常です。
(環境はTomcat 5.5.26+MySQL 5.0.22)
また、同じSQL文をサーバ上のphpMyAdminで実行すると、きちんと結果が返ってきます。
MySQLの文字セットはutf8、接続照合順序はutf8_general_ciです。
このような場合、どのように対処すれば良いでしょうか?
下記の事は試したのですが、だめでした。
・likeの後にbinaryを付けてみる
・サーブレットにrequest.setCharacterEncoding("UTF-8")を追加
・SQLを直接javaファイルの中に記述する
(フォームからの文字列受け取りの段階で失敗してるのではないか?と思ったため)
table を作る際に,設定の差異により,異なる文字コードで table が作られていませんか?
mysqldump してみると,table の default charset が分かります.
ローカル環境とサーバで,my.ini の設定が違ってる可能性もあります.文字コード関連の設定を再度見直してみてください.
mysqldumpで確認してみた結果、default-character-setはどちらもutf8でした。
「show variables like "char%"」を使って確認もしたのですが、
こちらもレンタルサーバのcharacter_set_serverがlatin1になっていただけで、
他はutf8となっていました。
テーブルを作成する時にDEFAULT CHARSET=utf8は指定しているので、
character_set_serverが有効とも思えないのですが…。完全にお手上げ状態です。
ご回答ありがとうございました。