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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

2回答

4208閲覧

JAVA フォーム入力した日本語の文字化け

y.shibacchi

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/05/18 05:39

###前提・実現したいこと
ある教本に記載されているサーブレットのサンプルコード(javaとhtml)を入力して、ブラウザで実行しましたが、フォームから入力して、出力した文字が文字化けしてしまいます。

###発生している問題・エラーメッセージ
イメージ説明

エラーメッセージ

###該当のソースコード

Java

1import java.io.*; 2import javax.servlet.*; 3import javax.servlet.http.*; 4 5public class Sample2 extends HttpServlet 6{ 7 public void doGet(HttpServletRequest request, 8 HttpServletResponse response) throws ServletException 9 { 10 try{ 11 //フォームデータの取得 12 String tmp = request.getParameter("cars"); 13 String carname 14 = new String(tmp.getBytes("8859_1"), 15 "JISAutoDetect"); 16 17 //コンテンツタイプの設定 18 response.setContentType 19 ("text/html; charset=Shift_JIS"); 20 21 //HTML文書の書き出し 22 PrintWriter pw = response.getWriter(); 23 pw.println("<html>\n" 24 + "<head><title>\n" + carname 25 + "</title></head>\n" 26 + "<body><center>\n" 27 + "<h2>\n" + carname + "</h2>\n" 28 + carname 29 + "のお買い上げありがとうございました。<br/>\n" 30 + "</center></body>\n" 31 + "</html>\n"); 32 } 33 catch(Exception e){ 34 e.printStackTrace(); 35 } 36 } 37} 38 39```html 40<html> 41<head> 42<title>サンプル</title></head> 43<body><center> 44<img src="car.png"/><br/> 45<h2>ようこそ</h2> 46<hr/> 47お選びください。<br/> 48<br/> 49<form action="http://localhost:8080/Sample02/servlet/Sample2" method="GET"> 50<input type="text" name="cars"/> 51<input type="submit" value="送信"/> 52</form> 53</center></body> 54</html> 55 56###試したこと 57本サイトでも似たような質問も見つけて、javaコード側の「JISAutoDetect」をほかのコードに変えたり、html側でも<meta>~行を追加してShift-jisを設定する、またUTF-8なども試してみましたが、結果は変わりませんでした。 58 59###補足情報(言語/FW/ツール等のバージョンなど) 60ブラウザはIE11 61java、htmlのファイルはShift-JISで保存しています。

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

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

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

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

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

guest

回答2

0

自分の環境(Eclipse/Tomcat Java7)で試してみましたが、
Shift-JISで保存されたhtmlは問題ないのですが、Javaに関しては文字化けします。フォームの内容も、です。
一方、UTF-8で保存したソースで実行した場合は以下のように正常に動作しました。
イメージ説明

投稿2017/06/01 06:02

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

y.shibacchi

2017/06/08 01:01

eclipseを使用していないのが原因でしょうか。 サクラエディタでソースコードを書いて、UTF-8で保存後にコンパイルすると、エラーがたくさん出てきてしまい、うまくいきませんでした。
guest

0

基本的にソースも全てUTF-8で保存する派なので参考になるかはわかりませんが、
リクエストの文字コードを指定できるようです。

java

1request.setCharacterEncoding("MS932");//コードの指定は適宜変えてください 2String tmp = request.getParameter("cars"); 3//中略

参考

投稿2017/05/31 16:37

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

y.shibacchi

2017/06/01 01:51

ありがとうございました。 頂いた内容で試してみたのですが、出力結果は変わりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問