プロが教える店舗&オフィスのセキュリティ対策術

javaでwebアプリケーション開発をしています。

mysqlに直接ひらがな・全角・半角・英数を打ち込むと受け付けてくれるのですが、servlet→jsp→mysqlの流れ(Java)で、情報を入力すると全角と平仮名が文字化けしてしまいます。
そのためmy.iniの変更を

[mysql]
default-character-set=utf8

↓↓↓

[mysql]
default-character-set=cp932

に変えましたが今だに文字化けしています。原因は何でしょうか・・・?
ご教示お願い致します。

質問者からの補足コメント

  • Mysql文字コード

    Variable_name | Value
    --------------------------+----------------------------
    character_set_client | cp932
    character_set_connection | cp932
    character_set_database | latin1
    character_set_filesystem | binary
    character_set_results | cp932
    character_set_server | latin1
    character_set_system | utf8
    character_sets_dir | C:\xampp\mysql\share\charsets\

      補足日時:2015/11/17 11:06

A 回答 (5件)

MySQL Command Line Clientなどは、my.iniを取り込む仕組みがあります。

したがって、[mysql]の設定が有効で、MySQL Command Line Clinetから、show variablesを表示すれば、文字コードの設定が一見、できているかのように見えます。
しかし、my.iniを取り込む仕組みがないアプリ環境では、そういう訳にいかず、[client]の設定が必要になります。
また、実際にデータベースを管理する側に対しては、[mysqld]で文字コードの設定が必要になるのです。
    • good
    • 0

サーバー側の設定、MySQL Command Line Client等以外のクライアントの文字設定が必要です。


また、MySQLのバージョンを、MySQL 5.x.xといったレベルまで提示するようにしてください。MySQL 5.1.x辺りで、文字コード設定のキーワードが変更されています。

>Mysql文字コード

これは、MySQL Command Line Clientで表示したものでは?
文字化けが発生する経路で、show variablesを実行してみてください。

以下に、文字設定してください。
[mysql]・・・MySQL Command Line Client等に有効
[mysqld]・・・MySQLサーバー側
[client]・・・MySQL Command Line Client等以外に有効
    • good
    • 0

MySQL側の文字エンコードが意図するものでも、入力を受け付けるページ・プログラムの文字エンコードはどうなんでしょうね。


プログラムでDBに突っ込もうとしてる値をデバッグしたら、その時点で化けてるんじゃないですか?

こういうのとか漏れてません?
http://www.atmarkit.co.jp/ait/articles/0501/14/n …
    • good
    • 0

初めまして



servlet→jsp→mysql

これは本当でしょうか?
かなり珍しい流れだと思いますが。

mysqlの設定の問題ではなく、servlet、jsp、mysqlのそれぞれの文字コードの確認。
および、request.getParameter()をする際の文字コードをrequest.getCharacterEncoding()で確認してください。
    • good
    • 0

Javaについてはよくわかりませんが


この手のアプリからDBに接続する際にはたいてい、
そのセッションで使用するキャラクターセットを
指定する手順があるものですが、指定していないのでしょうか?

どうしても対処方法がわからない場合は
あまりお勧めできませんが、SQLを発行する際に、
「SET NAMES CP932」を先行して発行するとかですかねぇ・・・

あと、直接は関係ないかもしれませんが、問題をきりわけるためにも
すべてのcharacter_set関連を統一しておいた方がよいと思います
    • good
    • 0
この回答へのお礼

回答ありがとうございます。utf8と指定しているのですが・・・

承知いたしました。試してみます。
ありがとうございます。

お礼日時:2015/11/17 12:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!