人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: mirifu
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:.NET Java Java SE MySQL phpMyAdmin
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● hoongt
●35ポイント

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


2 ● goodvn
●35ポイント

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が有効とも思えないのですが…。完全にお手上げ状態です。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ