- - PR -
MYSQL5.0、struts;1.29で文字化け
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-07-04 15:44
初めて。とろと申します。
MYSQLでの文字化けについて質問させて頂きます。 現在、struts1.29でWEBアプリを作っています。 JSPで入力画面を作り、入力して送信ボタンを押すと、入力した 内容がデータベースに反映されるようになっています。そこまでは いいのですが、データベースに反映された内容が文字化けして しまっています。 考えられる対策はすべてしようと思い、以下の対策をしました。 1 filter web.xmlに以下の記述をしました。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <filter> <filter-name>EncodeFilter</filter-name> <filter-class>SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> (以下略) 2 MYSQL側のエンコーディング設定 MYSQL側のエンコーディング設定を色々といじって、下記のような 状態にしました。 mysql> show variables like "char%"; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | utf8 | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\\Program Files\\MySQL\\MySQL Server 5.0\\share\\charsets\\ | +--------------------------+---------------------------------------------------------+ mysql> status; -------------- mysql Ver 14.12 Distrib 5.0.27, for Win32 (ia32) Connection id: 1 Current database: input Current user: root@localhost SSL: Not in use Using delimiter: ; Server version: 5.0.27-community-nt Protocol version: 10 Connection: localhost via TCP/IP Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 TCP port: 3306 Uptime: 4 hours 59 min 41 sec mysql> show create database input; +----------+----------------------------------------------------------------+ | Database | Create Database | +----------+----------------------------------------------------------------+ | input | CREATE DATABASE `input` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+----------------------------------------------------------------+ mysql> show create table input; +-------+------------------------------- ---------------------------------------- | Table | Create Table +-------+------------------------------- ---------------------------------------- | input | CREATE TABLE `input` ( `id` int(11) NOT NULL auto_increment, `title` text, `movie_url` text, `material_url` text, `explanation` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+------------------------------- 考えられる対策はすべてしても、なお文字化けしています。なお、 「あ」「い」「う」「え」とそれぞれの項目に入力すると以下の ようになります。 | 縺・ | 繧」 | 繧ヲ | 蠕・ | どんなことでも結構ですので、ご教授いただければ幸いです。 どうぞよろしくお願いいたします。 開発環境 OS;WINDOWS VISTA SP1 IDE;ECLIPSE 3.32 DB;MYSQL5.0 JRE;jre1.6.0_06 struts;1.29 | ||||||||
|
投稿日時: 2008-07-08 06:57
テーブルの内容を16進で表示してみてください
HEX('あ') と HEX(カラム) 「い」「う」「え」はUTF-8をSJISとした場合に提示された内容にはなりませんが UTF-8の3バイトを2バイトと1バイトにしているように思います | ||||||||
|
投稿日時: 2008-07-08 09:44
99ri様
投稿ありがとうございます。 誠に申し訳ないのですが、私は初心者でして、16進数などの言葉は わかりますが、99ri様のおっしゃっていることの理解ができません。 もう少し詳しく教えて頂けない でしょうか? 恐れ入りますが、どうぞよろしくお願いいたします。 | ||||||||
|
投稿日時: 2008-07-08 10:09
実はちゃんと更新されているとか。
確認に使っているteratermとかがUTF-8になってないということはないでしょうか? | ||||||||
|
投稿日時: 2008-07-08 12:37
ことぶきじーさん様 投稿ありがとうございます。確認に使っているのはコマンドプロンプトです。 コマンドプロンプトでmysql -u root -pでパスワードを入れてmysqlに入り、 あとはデータベースを選択してselect * fromで項目を表示させています。 | ||||||||
|
投稿日時: 2008-07-08 14:21
コマンドプロンプトはデフォルトShift-JISで表示されます。 UTF-8を表示させるには設定変更が必要です。 つ http://d.hatena.ne.jp/perlcodesample/20080706/1215291523 | ||||||||
|
投稿日時: 2008-07-08 16:07
トッポ様 投稿ありがとうございます。さっそく試してみたところ、以下のように文字化け してしまいました。 | あ | ã‚£ | ウ | å¾— | 元々、「あ」「い」「う」「え」とそれぞれの項目に入力すると 以下のように文字化けしていました。 | 縺・ | 繧」 | 繧ヲ | 蠕・ | ますますわからなくなってきました。何かご返信いただければ幸いです。 | ||||||||
|
投稿日時: 2008-07-08 17:17
XPからコマンドプロンプトでMySQLの動いているLinuxへtelnet接続して
MySQLコマンドで確認してみましたが確かにうまく表示できませんでした。 確認はコマンドプロンプト上ではないといけませんか? 出力画面を作った方が早そうな気が ^^; # selectの戻り値を表示させるだけだし |
1|2|3
次のページへ»