- - PR -
MYSQL5.0、struts;1.29で文字化け
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-07-08 19:02
トッポ様 ご返信ありがとうございます。 なるほど、コマンドプロンプトで確認するのではなくて、出力画面で確認 するのですね、有難う御座います。私はまだ初心者のため、selectの戻り値 の表示のコードをどうすればいいのか全く分からないため、これから勉強 したいと思います。 また質問させて頂くかもしれませんが、その時はご返信頂ければ大変 ありがたいです。 | ||||||||
|
投稿日時: 2008-07-09 06:34
テーブルのカラムの内容を文字に変換しないで16進で表示することです これによりデータが不正なのか表示で文字化けかを切り分けられます 操作 select HEX('あ'); inputテーブルのtitileが文字化けしているようなら select HEX(titile) from input; HEXの説明は下記参照 リファレンスマニュアル MySQL 5.0 Reference Manual :: 11 Functions and Operators :: 11.4 String Functions 旧版日本語マニュアル MySQLSQL言語リファレンス SELECT 節と WHERE 節で使用する関数 文字列関数 WEBアプリのボタン送信時のコードも記載したほうがいいと思われます DB登録前の受信時は想定データであることを確認したのでしょうか? | ||||||||
|
投稿日時: 2008-07-09 12:24
99ri様 ご返信ありがとうございます。 丁寧にご説明有難う御座います。さっそく、「あ」と入力した titleカラムに対して、以下のコマンドを実行してみました。 select HEX(title) from input; すると、| E38182 |と表示されました。E38182をgoogleで 検索してみたところ、どうやらUTF-8データは入力されているようです。 >WEBアプリのボタン送信時のコードも記載したほうがいいと思われます 下記のとおりです。 <%@page contentType="text/html; charset=utf-8"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <html> <head> <title>入力画面</title> </head> <BODY> <table border="1"> <html:form action="/confirmAction"> <tr> <th>タイトル</th> <td><html:textarea property="title" /></td> </tr> <tr> <th>動画URL</th> <td><html:textarea property="movie_url" /></td> </tr> <tr> <th>資料URL</th> <td><html:textarea property="material_url" /></td> </tr> <tr> <th>詳細説明</th> <td><html:textarea property="explanation" /></td> </tr> <html:submit>入力</html:submit> </html:form> </table> </BODY> </html> >DB登録前の受信時は想定データであることを確認したのでしょうか? この一文の理解が出来ません。大変恐縮ではありますが、もう少し 詳しくご説明願えませんでしょうか? | ||||||||
|
投稿日時: 2008-07-10 06:55
入力の「あ」がプログラム処理前に文字化けしていないかを確認するためです 「い」や「う」もhex()で内容を表示してみてください 「い」はE38184 ですがE381まで同じなので文字化けのパターンが「あ」と違うことが きになりました | ||||||||
|
投稿日時: 2008-07-11 01:53
毎回返信有難う御座います。 申し訳ございません、提示するデータが間違っておりました。 正しくは下記のとおりです。 | 縺・ | 縺・ | 縺・ | 縺・ | >「い」や「う」もhex()で内容を表示してみてください はい、「い」と入力した movie_urlカラムに対して、以下のコマンドを実行してみました。 select HEX(movie_url) from input; 結果は | E38184 | でした。 同じく、「う」と入力した material_urlカラムに対して、以下のコマンドを実行してみました。 select HEX(material_url) from input; 結果は | E38186 | でした。 何かしらご助言頂ければ幸いです。どうぞ宜しくお願い致します。 | ||||||||
|
投稿日時: 2008-07-14 06:31
mysqlでログイン後にクライアント側の文字コードを変更してください
SET NAMES 'cp932' または SET NAMES 'sjis' 参考 MySQL 5.0 Reference Manual 9.1.4. Connection Character Sets and Collations | ||||||||
|
投稿日時: 2008-07-14 06:49
ありがとうございます!ちゃんと表示されました。今度は逆に疑問があがって くるのですが、unixでもwindowsでもちゃんと表示されるようにあえてUTF-8に すべてエンコードをそろえたのにもかかわらず、shift-jisにすると、ちゃんと 表示されるのはなぜなのでしょうか? たびたびの質問の恐れ入りますが、ご返信いただければ幸いです。どうぞ宜しく お願い致します。 | ||||||||
|
投稿日時: 2008-07-15 06:56
文字の表示や入力はmysqlではなくOS側が行います
Windows日本語版(OS)はCP932がデフォルトです フォントとchcpでOS側をUTF8にしても正しく表示されなかったので mysql側のほうでOS側の文字コードにあわせるようにしたということです |