- PR -

JSPの文字化けについて

投稿者投稿内容
太郎
会議室デビュー日: 2002/09/10
投稿数: 4
投稿日時: 2002-09-10 10:19
Java Solution内の新人SEのためのJava講座「JSPコーディング・テクニック」
をWindows2000,JDK1.3,TOMCAT(jakarta-tomcat-3.2.4)で学習しています。
「第1回 作りながらJSPの活用を学ぶ」の「(3)ブックマーク登録機能の作成」の
「entry_form.jsp」を実行環境にあわせて(Linux→Windows)、「charset=euc-jp」
を「charset=Shift_JIS」に変更してブラウザ(IE6.0)で確認したのですが、
「シフトJIS」で表示されずに「西ヨーロッパ言語(ISO)」で表示されます。
拡張子を「.jsp」から「.html」に変更した場合には通常に表示されます。
この変更では、間違っているのでしょうか?他にも変更箇所がありますでしょうか?
おわかりの方は、お教えください。
DaikiRyuto
大ベテラン
会議室デビュー日: 2002/07/23
投稿数: 200
投稿日時: 2002-09-10 12:57
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
を外して試してみてください。


太郎
会議室デビュー日: 2002/09/10
投稿数: 4
投稿日時: 2002-09-10 17:27
DaikiRyuto様

お世話になります。
回答いただいたようにmetaタグを削除してみましたが、状況は変わりませんでした。
「<%@ page contentType="text/html; charset=Shift_JIS" %>」というコードを
追加すれば、解決はするのですが記事中には、htmlファイルは、拡張子をjspに変更すれば
JSPプログラムになるという事から考えると余計なタグは追加しないで動作すると思って
いるんですけどね。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2002-09-10 17:44
サーブレットコンテナの実装によってデフォルトのエンコーディングは違うようです。
おそらくWebsphereやWeblogicでは指定無しでも、正常に表示されると思います。
Tomcatの場合はディレクティブで直接エンコーディング名を指定します。
どのサーブレットコンテナでも動作するように、JSPの先頭にエンコーディング名を指定しておくのが一般的なやり方だと思います。
tei
会議室デビュー日: 2002/09/10
投稿数: 2
投稿日時: 2002-09-10 18:55
tomcatで
public String toUnicode(String s)
throws java.io.UnsupportedEncodingException {
return (new String(s.getBytes("8859_1"), "JISAutoDetect"));
}
太郎
会議室デビュー日: 2002/09/10
投稿数: 4
投稿日時: 2002-09-10 19:21
Anthyhime様

お世話になります。
わかりました。単純にhtmlファイルの拡張子をjspに変えても環境によっては正常に表示され
ない場合があるわけですね。必ず、ディレクティブタグでエンコーディング名を指定するよう
にします。
太郎
会議室デビュー日: 2002/09/10
投稿数: 4
投稿日時: 2002-09-10 19:27
tei様

お世話になります。
teiさんのご指示は、「public String toUnicode(String s)」を実装したテストプロを作
って、「UnsupportedEncodingException」が発生するかどうか確認して見なさいということ
でしょうか?
DaikiRyuto
大ベテラン
会議室デビュー日: 2002/07/23
投稿数: 200
投稿日時: 2002-09-10 19:37
jspファイルが変換されてクライアントに送信されるときは、エンコーディング情報がHttpプロトコルで送られるので、METAタグは必要無かった気がします。

最初の投稿は、METAタグを外した場合はブラウザが自動的に認識してくれると思ってのものです。

おやくにたてず、すみませんんでした。

スキルアップ/キャリアアップ(JOB@IT)