Java ServletとMySQLを使ってWebアプリを作成しています。

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ファイルの中に記述する
(フォームからの文字列受け取りの段階で失敗してるのではないか?と思ったため)

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/10/29 23:20:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:hoongt No.1

回答回数173ベストアンサー獲得回数3

ポイント35pt

文字コードを指定するしかないですが、もっと他のセット法もあると思います。

id:goodvn No.2

回答回数228ベストアンサー獲得回数18

ポイント35pt

table を作る際に,設定の差異により,異なる文字コードで table が作られていませんか?

mysqldump してみると,table の default charset が分かります.

ローカル環境とサーバで,my.ini の設定が違ってる可能性もあります.文字コード関連の設定を再度見直してみてください.

id:mirifu

mysqldumpで確認してみた結果、default-character-setはどちらもutf8でした。

「show variables like "char%"」を使って確認もしたのですが、

こちらもレンタルサーバのcharacter_set_serverがlatin1になっていただけで、

他はutf8となっていました。

テーブルを作成する時にDEFAULT CHARSET=utf8は指定しているので、

character_set_serverが有効とも思えないのですが…。完全にお手上げ状態です。

ご回答ありがとうございました。

2008/10/29 00:59:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません