質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

4回答

3451閲覧

JSP、Servletを使ってのデータベースへの日本語入力が上手くいきません。

kasotama

総合スコア35

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2016/02/04 04:44

###前提・実現したいこと
サーブレットを使ってデータベースに日本語を登録したいです。
昨日皆様のおかげでコマンドプロンプトからMariaDBのテーブルに日本語を登録することはできたのですが、今度はその作業をjspのformから受け取った値で行いたいと思っています。
半角英数だけなら問題なく登録できるのですが、日本語を入力すると文字化けしてしまします。

調べたところrequest.setCharacterEncodingとういものを使うといいらしいのですが、ここで指定するものがUTF-8なのかWindows-31Jなのかがわからずひとまず両方試したところ、どちらも文字化けしてしまいました。

現在僕のデータベースの文字コードはこのような設定になっています。

SQL

1 show variables like "char%"; 2+--------------------------+--------------------------------+ 3| Variable_name | Value | 4+--------------------------+--------------------------------+ 5| character_set_client | cp932 | 6| character_set_connection | cp932 | 7| character_set_database | utf8 | 8| character_set_filesystem | binary | 9| character_set_results | cp932 | 10| character_set_server | utf8 | 11| character_set_system | utf8 | 12| character_sets_dir | C:\xampp\mysql\share\charsets\ | 13+--------------------------+--------------------------------+

また、デバッグしてみたところrequest.getParameter();で受け取った値がすでに文字化けしていて、データベースには文字化けした値が登録されてしまったという感じになっています。

内容は今日のものとは異なりますが、一応昨日の質問のリンクも貼っておきたいと思います。

ほかに何か必要なコードなどがあったら教えてください。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

イクリプスでjspを実行すると、こんなひどい文字化けになりました。javaservletと連動させてます。
イメージ説明

学校ではTomcat v6.0サーバを使いましたが、何故か使えなくなっていたので5.5を使用しました。
tomcatフォルダの中に6~8のフォルダがあり、その中にconf > server.xmlがありフォルダ6のそれを加筆すると学校ではうまくいったのですが、今回は何も変わりませんでした。
どうすればいいのか考え込んでいます。
イメージ説明

投稿2016/02/06 15:10

K_Nakamura01

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

htmlの文字コードが送信されてくるデータの文字コードです。java 内部は unicodeです。

投稿2016/02/04 05:25

ipadcaron

総合スコア1693

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kasotama

2016/02/04 05:48

jspにはpage contentType="text/html;charset=UTF-8"と記述しました。なのでUTF-8になっているのではないかなと思います。
ipadcaron

2016/02/04 06:14

それは、jspの文字コードですよ。jspがコンパイルされるときに、日本語をutf-8 で翻訳しなさい、という指示です。 ブラウザにhtmlの文字コードをこれ使ってください、っちゅー指示するタグがあります。そのタグに指定された文字コードでリクエストパラメータが生成されます。
kasotama

2016/02/04 06:42

すみません。僕の勉強不足でそういったものがあることを知らなくて今まで何も指定していませんでした! 調べてみて<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">を挿入してみたのですがやはり文字化けしてしまいました…
ipadcaron

2016/02/04 06:55

jsp を最初から作り直してみてください。保存するとき、必ず utf-8 で保存されるようにしてください。 サーブレットの setcharacterencoding はコメントしてください。 もうちょっと勉強すれば、こういう本来の作業とは関係ない部分で悩まずに済みますよ、頑張って完成させてください。
kasotama

2016/02/04 07:37

jspを最初から作り直してサーブレットのほうもコメントアウトしました。 プロパティをみるとテキストファイルエンコードのところがUTF-8なっているのできちんと保存されていると思うのですがやはり文字化けしてしまいました…
ipadcaron

2016/02/04 16:34

文字化けって化けるタイミングが一杯あるのですが、どこで化けてるかきりわけできますか。 どこで、 1.getparameter したときに〜すでに化けてる 2.db格納後 cse などのsqlビュワーで内容を確認したとき化けてる 3.jspの描画結果のhtmlがブラウザに表示されたとキー化けてる 上記はほんの触りですけど、3つのうちどれか選べって意味じゃないでづ。
K_Nakamura01

2016/02/06 14:54

私も文字化けしてしまいました。 サーバー側の設定を修正するとよくなるみたいです。 http://qiita.com/ymsr5612/items/dde592eb76d884517a9b 学校でやったときは出来たのですが、家でやったときは環境が違うせいかできませんでした。
kasotama

2016/02/08 00:14

インフルエンザで寝込んでいました。返信ありがとうございます。 KouheiTsuji さんの意見にあったconf > server.xmlをいじるということをしてみたら上手くいきました!リンク先のURLにもあるとおりTomcat 5以降からsetCharacterEncodingメソッドを実行しても無視されるというのが該当していたようです。 ありがとうございました!
K_Nakamura01

2016/02/08 01:43

お互いに悩みを解決できて本当によかったです。 今後もよろしくお願いします。
guest

0

再度ダウンロードしなおして適切な場所で展開したところ解決しました。
やりなおした方が早かったみたいです。

投稿2016/02/07 00:59

K_Nakamura01

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

回答リクエストありがとうございます。
ただ、私はJSP、Servletについては分からないので、ipadcaronさんを頼りにしてください。すみません。

一般論ですと、ファイルとタグをutf8にする他に、データベース(MariaDB)に接続する際に文字コードをutf8に指定する必要があります。

MariaDBに接続するのにJDBCを使っていると思うのですが、characterEncoding=utf8のように指定します。
参考URL:http://www.tekboy.net/archives/294

投稿2016/02/04 15:21

coba-coba

総合スコア1409

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kasotama

2016/02/08 00:17

おはようございます。 きちんとcoba-coba さんのタグを見ないで質問してしまいすみませんでした!前回も助けていただいたのでもしかしたら…とリクエストを送ってしまいました。 自分の分野ではないことなのにわざわざ使えそうなサイトを探していただきましてありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問