- PR -

Tomcat4.1.29のHTMLファイル文字化け問題について

投稿者投稿内容
しれん
会議室デビュー日: 2003/10/29
投稿数: 9
お住まい・勤務地: 東京都
投稿日時: 2003-11-14 10:17
はじめまして、しれんと申します。
いつも多いに参考にさせて頂いております。

Win32版Tomcat4.1.29についての問題なのですが
StaticなHTMLファイルを表示させた場合、<meta>タグにてcharsetを指定していても
無視され、ISO8859-1エンコードと解釈されて表示される為
ブラウザ側で自動認識出来ず、文字化けする問題が出ており、悩んでいます。

ServletからForwardしたJSPを、
表示する場合に指定した<@page encoding...>ディレクティブは正常に動作
しており、文字化けすることはありません。
純粋にURL指定したHTMLファイルのみ<meta>タグが無視され、ISO8859-1として
認識されて文字化けしております・・・
ちなみに複数の環境でチェックしましたが、同様に自動認識されない状態です。

Tomcat側で、HTMLヘッダーに固定でISO8859-1のcharset指定を付与している
かと推測し、server.xml等の記述情報を調べたのですが
中々解決の糸口がつかめず、ご助力を頂きたく思いました。

宜しくお願いいたします。
しれん
会議室デビュー日: 2003/10/29
投稿数: 9
お住まい・勤務地: 東京都
投稿日時: 2003-11-14 10:57
補足です。
Apache2.0.48(Win32版)をinstallし、標準のHTMLを表示させてみた所
やはりISO8859-1として自動認識されました。
charset指定の<META>タグは以下のものです。
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
(他、Shift_JIS,EUC-JPも試しました。)

Apache、Tomcat共に同じ現象が起こる事でServerのConfing設定が原因では
無い様な気もしてきましたが・・・

当方の環境です:
OS : WindowsXP-Professional
Browser : IE6(encoding自動認識設定)
Server : Tomcat4.1.29

宜しくお願いいたします。
tabby
ベテラン
会議室デビュー日: 2002/06/26
投稿数: 55
お住まい・勤務地: 埼玉県・東京都
投稿日時: 2003-11-14 11:43
こんな感じでデフォルトエンコーディングを指定してみてください。

<Context 〜>
<DecodeInterceptor defaultEncoding="Shift_JIS" />
hogehoge...
</Context>

Apache 2.0も似たような話です。
HTTP1.1ではレスポンスヘッダでのエンコード指定が正しいという話を
きいたような気がしますが、ネタ元を覚えていないので・・・
しれん
会議室デビュー日: 2003/10/29
投稿数: 9
お住まい・勤務地: 東京都
投稿日時: 2003-11-14 12:40
tabbyさん有難う御座います。

conf/web.xmlの
<mime-type>テキストノードに
"text/html;charset=UTF-8"
とすることで、デフォルトキャラセットとしてUTF-8を設定することが
出来ました。(以下記述)

<mime-mapping>
<extension>body</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>

IEでは<meta〜charset=...>は無視されるんでしょうか・・・。
<DecodeInterceptor defaultEncoding="Shift_JIS" />の方も試してみようと
思います。
有難う御座いました。

引用:

tabbyさんの書き込み (2003-11-14 11:43) より:
こんな感じでデフォルトエンコーディングを指定してみてください。

<Context 〜>
<DecodeInterceptor defaultEncoding="Shift_JIS" />
hogehoge...
</Context>

Apache 2.0も似たような話です。
HTTP1.1ではレスポンスヘッダでのエンコード指定が正しいという話を
きいたような気がしますが、ネタ元を覚えていないので・・・

ちば
大ベテラン
会議室デビュー日: 2003/02/14
投稿数: 114
お住まい・勤務地: 都内勤務
投稿日時: 2003-11-14 13:07
補足ですが

引用:

しれんさんの書き込み (2003-11-14 10:57) より:
補足です。
Apache2.0.48(Win32版)をinstallし、標準のHTMLを表示させてみた所
やはりISO8859-1として自動認識されました。
charset指定の<META>タグは以下のものです。
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
(他、Shift_JIS,EUC-JPも試しました。)



Apacheの場合は、$APACHE_HOME/conf/httpd.conf(700何行目か)で
"AddDefaultCharset"という項目でISO8859-1を指定しています。
これが指定されている場合、HTMLファイルの<META>タグは無視されてしまうとどこかで見ました。
Apacheの場合では上記項目にISO8859-1の代わりにOffとするか、行ごとコメントするとHTMLファイルの
<META>タグを認識してくれます。
FE
会議室デビュー日: 2002/05/24
投稿数: 9
投稿日時: 2003-11-14 13:41
しれんさん、
http://www.jajakarta.org/kvasir/bbs/technical/251
をご覧になって下さい。
しれん
会議室デビュー日: 2003/10/29
投稿数: 9
お住まい・勤務地: 東京都
投稿日時: 2003-11-14 14:13
to ちばさん
ご助言有難う御座います。
AddDefaultCharsetの件を確認致しました。
コメントアウトした所、<meta〜charset=...>が機能することを
確認しました。
今までの開発経験の中で、環境を一から作る事があまり無かったもので
基本的な知識が抜け落ちていることを改めて実感しました・・・

to FlossenEngelさん
まさしく同じような問題のスレッドですね!
まだまだGoogleの使い方が甘いようです・・・。
参考になりました。有難う御座います。

<mimetype>テキストノードの指定で一応臨時措置を取ったのですが・・・
HttpHeaderのcharsetにISO8859-1が含まれる「バグ(?)」のFIXとCommitが
これから行われるということでしょうか。
バージョンダウンで対応したい所ですが、やはりOldVersionのArchiveを取っておくのは
大事ですね。教訓になりました。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-11-14 14:19
ども、ほむらです。
------------------
<meta>タグはHTTPヘッダの補足という位置付けのようですね。
HTTPヘッダですでに宣言されていれば無視する仕様のようです。

Web標準普及プロジェクト−Web標準化Tipsより
http://www.mozilla.gr.jp/standards/webtips0022.html
下のほうにちらと書いてあります

#HTMLの仕様ではなくてmozillaの仕様ですね^^;;;
#でもIE6のベースはMozilla/4.0。。関係しているかもしれません。

[ メッセージ編集済み 編集者: ほむら 編集日時 2003-11-14 14:39 ]

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