こんにちは。
サーブレットに質問したいことがあります。
以下のサンプルソースで、
response.setContentType("text/html;charset=Shift_JIS");
の部分があるのですが、このようにすると日本語が文字化けしてしまいます。
ちなみにresponse.setContentType("text/html);
とすると、日本語も文字化けせずに正しく表示されます。
ここで質問なのですが、
サーブレットの場合はJSPと違い、charsetを指定しなくてもよろしいのでしょうか?
何か分かることがありましたらご教授御願い致します。
---------☆サンプルソース(HelloWorldExample.java)☆----------------
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorldExample extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html;charset=Shift_JIS");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>ハローワールド</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>HelloWorld ハローワールド</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
---------------------------------------------------
No.6ベストアンサー
- 回答日時:
>>コンパイルしているのではないでしょうか?
>Linux上でソースを見てもキャラセットはShift_JISになっています。そしてそのままコンパイルし、ブラウザ(IE)に表示しています。
まさか、そんなことをしていたとは予想していませんでした。
Javaは基本的には Write Once, Run Anywhere です。
Linux上で再コンパイルする必要などないのです。
今回の場合は、Windows上でコンパイルして
*.classをLinuxに持っていってください。
回答ありがとうございます。
問題解決しました!
yujiさんに指摘されたようにサンプルソースを
Windows上でコンパイルして*.classをLinuxに持っていくとうまくいきました。
今回は本当にどうもありがとうございました。
また何かありましたら宜しく御願い致します。
No.5
- 回答日時:
プラットフォームのデフォルトでないエンコードで書かれたソースファイルを
コンパイルするときは、
javac -encoding Shift_JIS XXX.java
のようにエンコードの指定が必要です。
この回答への補足
回答ありがとうございます。
Windows上ではHarry_さんが教えてくださった
javac -encoding Shift_JIS XXX.java
でコンパイルできたのですが、
Linux上では下記のようなエラーが発生しました
-----------------------------------------------------------------
Kjc: unrecognized option ''-encoding''
java.lang.NullPointerException
at at.dms.util.Options.parseCommandLine(Options.java:72)
at at.dms.kjc.Main.parseArguments(Main.java:164)
at at.dms.kjc.Main.run(Main.java:52)
at at.dms.kjc.Main.compile(Main.java:255)
at at.dms.kjc.Main.main(Main.java:246)
-----------------------------------------------------------------
TomcatはWindow上とLinux上では処理が異なるのでしょうか?
No.4
- 回答日時:
Linux上にソースを転送し、コンパイルしている、
とありますが、そのときに EUC のソースにして
コンパイルしているのではないでしょうか?
Shift-JIS で表示したいのなら、
Windows 環境でコンパイルして、
*.classファイルを Linux に持っていけばいいです。
Linux上で、EUCのソースをコンパイルしたいんだったら
EUC で表示すべきでしょう。
(Shift-JISで表示できなくもないですが、面倒です。)
この回答への補足
回答ありがとうございます。
>>Linux上にソースを転送し、コンパイルしている、
>>とありますが、そのときに EUC のソースにして
>>コンパイルしているのではないでしょうか?
Linux上でソースを見てもキャラセットはShift_JISになっています。そしてそのままコンパイルし、ブラウザ(IE)に表示しています。
>>Linux上で、EUCのソースをコンパイルしたいんだったら
>>EUC で表示すべきでしょう。
もしかしてwindows2000でサーブレットのファイルを作成し、それをファイル転送した後にLinux上でキャラセットをeuc-jpにしてコンパイルするということでしょうか?
No.2
- 回答日時:
takekun22さんの環境はLinuxではなかったですか?
だとしたら、charset=Shift_JISじゃまずいのでは。
でも何で指定しなくても文字化けしないんでしょうね。
この回答への補足
回答ありがとうございます。
response.setContentType("text/html);
をなくし、
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ShiftJIS">
を指定してもうまくいきました。
専門書を参考にすると、
response.setContentType("text/html;charset=ShiftJIS");
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ShiftJIS">
の2つが指定されていますが、このようにすると日本語が文字化けします。
なぜなのでしょうか?
ちなみに自分は
(1)サーブレット、JSPのファイルはWindows2000上で作成し、
(2)ホームページビルダーのファイル転送の機能を使って、Linux上にファイルを転送し、
(3)Linux上でサーブレット(*.java)をコンパイルして、Tomcatの再起動を行っています。
No.1
- 回答日時:
よく判りませんが、charsetは、httpのヘッダ(この場合はContentType)ではなく、htmlのヘッダの中にmetaタグの中などに入れてもよいのではないでしょうか?
こんな感じだったでしょうか?
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=ShiftJIS">
または、両方入れならければならないとか?
よく判らないですけど…
この回答への補足
回答ありがとうございます。
response.setContentType("text/html);
をなくし、
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ShiftJIS">
を指定してもうまくいきました。
専門書を参考にすると、
response.setContentType("text/html;charset=ShiftJIS");
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ShiftJIS">
の2つが指定されていますが、このようにすると日本語が文字化けします。
なぜなのでしょうか?
ちなみに自分は
(1)サーブレット、JSPのファイルはWindows2000上で作成し、
(2)ホームページビルダーのファイル転送の機能を使って、Linux上にファイルを転送し、
(3)Linux上でサーブレット(*.java)をコンパイルして、Tomcatの再起動を行っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列にnullを代入すると、null...
-
プログラミングの問題です。大...
-
eclipseで作ったプログラムを他...
-
eclipse実行ができない
-
Processingでマウスクリックで...
-
JSFタグのfタグとは
-
JAの支部?地域の農協のカード...
-
問題作成のWebアプリの作り方を...
-
正規表現について質問です。 カ...
-
下記問題の答えが"D"になる意味...
-
JaneStyleのスレッドが見れなく...
-
キー入力について
-
jdk17.06のインストーラーが起...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
マイクラでPythonのプログラミ...
-
配列にnullを代入すると、null...
-
jdk17.06のインストーラーが起...
-
Eclipse 動的プロジェクトで404...
-
list の空は [] ってあわらすのに
-
下記問題の答えが"D"になる意味...
-
JaneStyleのスレッドが見れなく...
-
正規表現について質問です。 カ...
-
eclipseで作ったプログラムを他...
-
改行含むテキストの表示の仕方
-
リレーションエンティティクラ...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
-
キー入力について
-
自作Androidアプリのデータ引き...
-
問題作成のWebアプリの作り方を...
-
eclipse実行ができない
-
変数名とDBカラム名の関係性に...
-
デバッグツールの具体例を教え...
おすすめ情報