世界中には多くの言語が存在し、それを1つのコンピュータで表現するには、それらの言語に対応したコードが必要になります。 更に悪いことに、OSによってはそのコードの表現方法が異なり、1言語に対して複数の文字コードが存在します。 文字コードは他に符号化方式(Character Sets)とも呼ばれています。
さてその文字コードと各国の言語、OSとの関係はどうなっているのか、少しだけ触れてみましょう。 言語は多いので、日本語に絞ると以下のようになっています。
人間が目で見る文字とコンピュータが認識する文字との差があり、プラットフォームごとに異なるコードを使用していたのでは、特にインターネットの世界では困ります。
そこで、メールやニュースなどではISO-2202-JPが用いられています。 ところがWebサイト(HTML)ではその約束事が無く、文字コードは様々な種類のものが氾濫しています。
一般的にUNIX系以外(WindowsやMac)を使っている方はShift_JISを使用していることになります。 通常、HTML文書にはこのコードを明示する必要があります。 と、ここの話をし出すと延々続くのでこの辺でやめることにします。
HTML文書に文字コードを指定する方法は、META要素を用います。 下記に例題を示します。
<META Http-equiv="Content-Type" Content="text/html;charset=Shift_JIS">
「文書タイプはtext/html形式でShift_JISコードである」というメタ情報をサーバーがブラウザに送るもので、ブラウザはこれを基にその形式、コードで表示しようとします。(といっても完全ではないが)
さて本題ですが、Content="text/html;charset=x-sjis"というのをよく見かけます。 この「x-sjis」というのは「Shift_JIS」と同義語です。 では、どちらが正解なのでしょうか?
答えからいくと両方正解です。(厳密には「Shift_JIS」だが) 規格が2つあるのはおかしいとお考えのあなたは更に正解です。 ではどういうことなのでしょう?
インターネットが始まった頃、まだそのころはアメリカだけのものでした。
この時MozaicMozillaという今のNNの前身のブラウザの出現と共に大きく飛躍しました。
このNetscpeMozilla2.0の時点で日本語のコードも対応されたわけですが、この時点でシフトJISコードを「x-sjis」という風に定義づけてしまいました。
日本でもMozaicMozillaと共にインターネット全盛を迎えていくことになります。
悪いことに「Shift_JIS」には未対応で「x-sjis」のみ連れて・・・
その後、IE3、NN3にバージョンアップし、漸くこの時「Shift_JIS」が使えるようになったのです。
しかし残念なことに一度普及してしまったMozilla2.0が存在する限り、「Shift_JIS」では未対応ブラウザがあるため、世の中では更に「x-sjis」が使われました。
こうやってデファクトスタンダードとなっていき、これで「x-sjis」が規格と勘違いするもの、NetscpeMozilla2.0がまだ存在するからと理由づけるもの、と未だに「x-sjis」が使われ続けています。
タイトルの「Shift_JIS」or「x-sjis」を考えると、どちらが本来の正解かわかってきたかと思います。 私の場合もWebデビュー間もない頃は適当に使っていた文字コードが未だにサイトのどこかに眠っているはずです。 今現在着実に「Shift_JIS」化を進めています。
この話に興味を持った方、持たない方いるとは思いますが、「Shift_JIS」を積極的に使用していくようにしましょう。 当然、ご自分の使用している文字コードに合わせることを前提としていますが。
[参考文献]
ANSI_X3.4-1968[RFC1345,KXS2]
HTML 4.0 Specification
間違いだらけのHTML書法
当文書は、俗説を基にしたものであり、人によっては、或いは認識の違いによる誤解が一部無いとも限りません。 あくまでも私個人の意見でありますので、寛大な知見により参考にして下さい。