竹形誠司 ブログ
Java+MySQL+Tomcat    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
Windows-31Jを理解しないIE
by 竹形 誠司[takegata]
↑のタイトルを見て反射的にWindows 3.1(Windows95の前のバージョン)を思い浮かべた方は結構なキャリアの持ち主であると拝察される:-)

今の世の中でWindows-31Jといえば、IANAというインターネットの標準化団体が定めた文字コードの名前だ。この文字コードはShift_JISに@(←丸付き数字)や梶i←カッコ付きの株)など、かつて機種依存文字と呼ばれたもの(標準化されたのでもはや機種依存ではない)が追加されている。国際標準化に敏感なJavaなどの言語では、文字コードがShift_JISと指定された場合は丸付き数字などを受け付けない(文字化けする)ので、“Windows-31J”と正しく指定しなければならない。

ところが、IEの6.x以前のバージョンは“Windows-31J”を文字コード名と認識しないらしい。charsetにWindows-31Jが指定されたページでも、冒頭にJavaScriptなどのコードがあるとエンコードが「西ヨーロッパ言語」に切り替わり、日本語が化けてしまうことがある。

IE6.x以前のバージョンで上記の問題を避けるには、JSPでは次のように書けばよいようだ。
<%@ page contentType="text/html; charset=Windows-31J"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>TEST</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
</HEAD><BODY>
テスト
@
</BODY></HTML>
JSPでは丸付き数字ややカッコ付きの株など、Shift_JISに無い文字を使う場合は、page ディレクティブのcontentType属性でcharset=Windows31Jと指定しておく必要がある。そして、Windows-31Jを理解しないIEのために、META要素でHTTP-EQUIV属性にContent-Type、CONTENT属性に"text/html;charset=Shift_JIS"を指定する。

気持ちは悪いがしょうがない。
投稿:竹形 誠司[takegata]/2006年 09月 24日 03時 27分 /更新:2006年 09月 24日 03時 27分