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

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

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

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

Eclipse

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

399閲覧

Eclipse HTML上 日本語→?に変化

beginner111

総合スコア9

Java

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

Eclipse

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/06/12 11:56

###前提・実現したいこと
サーブレットの動作確認

###発生している問題・エラーメッセージ
作成したサーブレットを動作させた際に
表示される画面の日本語が???となってしまう

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

ここにご自身が実行したソースコードを書いてください

package sarvlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class SampleServlet

*/
@WebServlet("/SampleServlet")
public class SampleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); //運勢 String[] luckArray = { "超" , "中" , "悪" }; // 0-3 int index = (int)(Math.random() * 3); String luck = luckArray[index]; //実行日 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); String today = sdf.format(date); //HTML response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>すっきり</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>" + today + "運勢" + luck + "です</p>"); out.println("<p>です</p>"); out.println("</body>"); out.println("</html>"); }

}

###試したこと
1.以下を「UTF-8」に設定
■ウィンドウ→設定 一般→コンテンツタイプ→テキスト→HTML デフォルトエンコード
■ウィンドウ→設定 一般→ワークスペース テキストファイルエンコード
■ウィンドウ→設定 Web→JSPファイル→エンコード
■ウィンドウ→設定 Web→HTMLファイル→エンコード

2.「C:\pleiades\eclipse」フォルダ内の「eclipse.ini」をメモ帳で開き
「-Duser.language=en」
「-Dfile.encoding=utf-8」
を追記
以下全文

-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Xms256m
-Xmx1g
-Xverify:none
-javaagent:dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
-Duser.language=en
-Dfile.encoding=utf-8

###補足情報(言語/FW/ツール等のバージョンなど)
Eclipse
Version: Neon.3 Release (4.6.3)
Build id: 20170314-1500

OS Windows8.1
プロセッサ Intel(R) Core(TM) i5-5200U CPU @2.20GHz 2.20GHz
実装メモリ 8.00GB
システムの種類 64ビットオペレーティングシステム x64 ベースプロセッサ

Tomcat7
Java7

「スッキリわかる サーブレット&JSP」を使用して勉強し始めましたが、
3章で上に記載したように
「HTML上で日本語部分が ? に変化」してしまう問題が発生しております。
色々と検索して試してみたつもりではいるのですが、解決に至っておりません
お力をお貸し頂ければと思います

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

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

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

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

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

guest

回答2

0

ベストアンサー

サーブレットからレスポンスを書き出している最初の行に

response.getWriter().append("Served at: ").append(request.getContextPath());

があるからです。

response.getWriter()する前に response.setContentType("text/html; charset=UTF-8"); をすれば正しく出力されます。

投稿2017/06/13 04:14

A-pZ

総合スコア12011

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

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

beginner111

2017/06/14 03:51

ご指摘の通りに修正したところ、文字化けが解消しました。 とても助かりました。ありがとうございます。
guest

0

なぜでしょうね、JavaはUTF-8対応のはずなんですが、私もUTF-8だと文字化けするので、私はANSIを使っています。
ANSIなら日本語も正しく表示されます。

投稿2017/06/13 00:15

otftrough

総合スコア476

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

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

beginner111

2017/06/14 04:41

設定に問題があると思い込んでおりましたが、記述したコードにミスがあったようです。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問