まとまりのないブログ

something which something is something

jsp

mysqlへjdbc接続した場合に文字化けが発生する

投稿日:

私の環境の場合は文字コードは全てutf-8で運用していたけれど、jspのフォームからパラメータを送って、サーブレットでsqlのinsert文を実行し、結果が正しく反映されているかどうかmysql command line client から確認してみたところ、日本語の文字列が全て???に化けてしまっていた。jspとサーブレット、mysqlの文字コードは全てutf-8で統一しているにもかかわらず。色々と調べた結果、下記の内容をmysqlのmy.iniファイルに追記することで変化が現れた。

mysql-5.0.20を使いたいのですが、文字化けで困っております。日本語の文字が?になってしまいます。
●my.iniで、追加した項目

[client]

default-character-set=sjis

[mysqld]

skip-character-set-client-handshake

init-connect=SET NAMES sjis

これを追記したあとで再起動して、もういちどテストしてみると???のような文字化けではなくて”繝・せ繝・”のような文字化けに変わった。次にmysqlの変数を設定する。


mysql> show variables like 'char%';

+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | utf8                                                    |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8                                                  |
| character_set_server     | utf8                                                    |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:Program FilesMySQLMySQL Server 5.0sharecharsets |
+--------------------------+---------------------------------------------------------+

上記が私の環境でのmysqlの文字コードの設定内容となっている。utf-8に揃えているのだけれど、character_set_resultsの値は接続するクライアントの環境の文字コードに合わせる必要がある。私の場合は、windows xpでmysql command line clientを使ってmysqlに接続している。つまり、コマンドプロンプトでmysqlを操作している。コマンドプロンプトは表示する文字コードがshift-jisに固定となっている。そのため、mysqlの変数のcharacter_set_resultsにsjisを設定しなければならない(コマンドプロンプト以外でアクセスする場合はそのクライアント端末によって変わることになる)


mysql> set character_set_results = sjis;


これで、なんとか文字化けの現象は回避できた。

-jsp

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

no image

Javaによるデータのソート方法についての考え – 異なるデータ形式を一つのものとしてソートする場合

データ形式が違う2つのものを合体させてからソートをするというような時,どういう方法があり得るかというのをなんとなく考えてみた。例えば,xml形式のデータと,sql発行の結果データなど,違う形式のデータ …

no image

[超簡単] JAVA : 配列から文字列 と 文字列から配列 への相互変換

ArrayListの形式 ここでは配列の中に配列があるという多重配列の構造となったArrayListオブジェクトの場合について扱う ArrayList<ArrayList<String&g …

no image

JAVAでftpした時にリモートのディレクトリ存在チェック

存在チェックする関数は用意されていない模様。代わりにchangeWorkingDirectoryで代用する。 boolean directoryExists = FTPClient.changeWor …

no image

JavaServerPage においてCSSのmedia=print が働かない現象について

JSPにて表示するウェブページのスタイルシートを別途プリント用のスタイルシートを用意して適用させてみようとテストしたところ,表示されないという現象があった。下記のような感じで記述をしてみたのだが,どう …

no image

ウェブブラウザの違いによる文字化け

ウェブアプリケーションを作成する場合には避けては通れない問題の一つに文字化けがある。日本語データをクライアントとサーバでやりとりする場合にはURLエンコードをする必要があるので、それをデコードしたりす …