- PR -

Tomcat経由で表示するHTMLファイルが文字化け

1
投稿者投稿内容
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2003-12-18 10:19
いつもお世話になっています。
msoです。

現在、テスト環境でtomcatを使ってHTMLを表示しています。
(http://localhost:8080/index.htmlというような感じ)
そこでマルチバイト(日本語)を表示させると
ISO-8859-1 で表示されます。

自分で解決方法として、HTMLファイルにMETAタグでEUC-JPを
セットしているのですが、それでも文字化け(ISO-8859-1で表示)されます。

web.xml server.xmlなどを確認してみたり、過去ログやgoogleでの
検索をしてみたのですが私の理想的な解決方法をみつけるにいたりませんでした。

ただ、一度Unicodeに変換すれば大丈夫というような記事をみつけました。
個人的にはHTMLファイルの修正をするたびにUnicodeの変換を
やりたくないのでtomcatからHTMLファイルを小細工(Unicodeへの変換)なしで
表示させたいと思っています。
tomcatの設定を変更することでHTMLファイルのマルチバイトを正しく
表示させるようなことはできないものでしょうか?
MIU
会議室デビュー日: 2003/12/18
投稿数: 5
投稿日時: 2003-12-18 10:45
Tomcat4.1.29にはhtmlファイル送信時に勝手にcharset ISO-8859-1を設定するバグがあるので注意が必要です。googleで"tomcat4.1.29 文字化け"で検索するといくつか情報が載っているサイトがヒットします。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2003-12-18 10:52
引用:

MIUさんの書き込み (2003-12-18 10:45) より:
Tomcat4.1.29にはhtmlファイル送信時に勝手にcharset ISO-8859-1を設定するバグがあるので注意が必要です。googleで"tomcat4.1.29 文字化け"で検索するといくつか情報が載っているサイトがヒットします。



tomcat 4.1.29を使っていて、googleで検索をしたところ
見事にバグ(?)の現象がそのままでているようです。
個人的なところですが、下記の対応方法でやってみようと思います。

具体的な解決策は自分でいろいろと実見してから
ここに公開させてもらいます。


http://hp.vector.co.jp/authors/VA000137/tomcat-memo.html
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2003-12-18 13:26
msoです。

解決できました。
ソースからバグを修正する方法とか
(よくわからないですが、)Filterする方法とか。
んでもって、私の環境にあっていてもっとも
簡単であろう修正方法をしました。

手順は下記のとおりです。

1:$CATALINA_HOME/conf/web.xmlの修正
mime-mappingのmime-typeに
;charset=EUC-JP
を追加して強制的に文字コードをセットさせる。

<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=EUC-JP</mime-type>
</mime-mapping>

2:根拠はないけど、tomcatの再起動
3:ブラウザで動作確認→最初はキャッシュで
おかしいままでしたが、リロードしたら
正しく表示されました。

mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2003-12-18 13:49
引用:

<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=EUC-JP</mime-type>
</mime-mapping>




自己レスです。
私が使っている通常のDebug環境がRedHat8 and Mozillaなので
気がつかなかったのですが、Windows XP and IE6.0で
テストをしたところまだばけていました。

そこで
<mime-type>text/html; charset=EUC-JP</mime-type>
というようにtext/html;の後にスペースをいれることで
解決することが出来ました。

ちょこっとですが訂正しておきます。


1

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