↑のタイトルを見て反射的に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では次のように書けばよいようだ。
気持ちは悪いがしょうがない。
今の世の中で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"を指定する。<!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>
気持ちは悪いがしょうがない。
投稿:竹形 誠司[takegata]/2006年 09月 24日 03時 27分
/更新:2006年 09月 24日 03時 27分