のけぞる本・郊外

HTML 周辺ののけぞり

HTML そのものに関する誤解ではないのですが、周辺領域の間違い。

HTML文書の拡張子は……

のけぞり度:★★★

HTML文書の拡張子は htm か html でないといけないのだそうです。W3C のサイト などには拡張子のないリソースがたくさんあるのですが、これは何かの間違いでしょうか?

拡張子のない HTML文書がちゃんと読めるのは、HTTP応答ヘッダの中で Content-Type の値として text/html が与えられているからです。要は HTML文書の MIMEタイプが text/html であれば良いのですが、多くのサーバやクライアントは単に拡張子を見て MIMEタイプを付与します。ですから、たいてい htm や html の拡張子をつけることになりますが、サーバの設定によっては、ほかの拡張子に text/html をつけてくれるかもしれません。

……ということであって、HTML文書の拡張子は htm か html でなければならないとは言い切れませんし、拡張子が絶対になければならないというわけでもありません。

スタイルシートは CSS ?

のけぞり度:★★

スタイルシートの拡張子は CSS でないと駄目だそうです。上記と同じような感じですが、それ以前に JSS とかはどうなるのでしょうか?

うっかりなのか無知なのかは知りませんが、スタイルシート=CSS と思いこんでいる人が多いようです。仕様書を読めばスタイル言語は CSS に限らないと書いてありますし、現に JavascriptStyleSheet というものを実装しているブラウザが存在しているのですが、きれいさっぱり無視されています。少なくとも私は「JSS の解説書」というものを見たことがありません。

ISO-2022-JP は何のために?

のけぞり度:★★★

インターネットメールで日本語を扱う場合には、ISO-2022-JP で符号化するのが普通です。それはそれで良いのですが、その理由としてとんでもない解説をしている人がいます。

曰く、Windows や Unix や Mac ではそれぞれ使っている文字コードが違うので、どの機種でも読めるように共通の文字コードとして ISO-2022-JP を規定した……。

って、なにか三重くらいに間違っているような気がしますが、ともかく違います。

まず、機種や OS によって文字コードが違うと言う議論自体がかなり怪しいものです。私は PC/AT 互換機(いわゆる DOS/V 機)に Windows95 OSR2 を入れて使っています。Windows では Shift_JIS が標準とされていますが、私はこの PC で ISO-2022-JP も EUC-JP も UTF-16 も読み書きできます。ある文字符号化方式で符号化されたデータを読めるか否かはエディタやビューアの問題であって、機種や OS の問題ではないはずです。

そもそも、ISO-2022-JP は普通、ネット上を流れるときにだけ使われるもので、クライアントの PC の内部では別の文字符号化方式が使われることが多いのです。

インターネットメールで ISO-2022-JP を使うのは何故かと言いますと、これが 7bit コードだからです。インターネットメールを送る標準のプロトコルは SMTP ですが、SMTP では 7bit コードの転送しか保証していません。従って、Shift_JIS などの 8bit コードをそのまま送ると、8bit 目が欠落してしまう可能性があります。最近はメールサーバの多くが ESMTP に対応していて、8bit の送信が可能な場合もあります(現に私は生の EUC-JP を受信したことがあります)。しかしいまだに SMTP を使っているところもありますので、7bit コードを使っておいた方が安全というわけです。

そんなわけですから、Shift_JIS などでも Base64 でエンコードしてしまえば安全です。

インターネットでは半角カナは御法度?

のけぞり度:★★★

なんだか良く分かりませんが、「インターネットでは半角カナは御法度」とか「インターネットでは半角カナは使用できません」とか断言している本が複数あります。とりあえずインターネットって何ですか? と質問したくなるのですが、それらは HTML の解説書ですから、HTML で半角カナが使えないと言っているように読めます。

そうだとすると、これは明らかに誤りです。HTML4 では半角カナを扱うことが出来ます。

HTML4 では、UCS-4で定義されている文字のほとんどを扱うことが出来ます。まあ現実には BMP の文字しか使えませんが、半角カナもしっかり BMP で定義されている文字ですから、HTML4 で扱うことは可能ですし、何の問題もありません。

確かに、文字符号化方式として ISO-2022-JP を使っている場合は、半角カナを表現することが出来ません。しかし、これは ISO-2022-JP の制限であって、HTMLの制限ではありません。ISO-8859-1 で日本語の文字が扱えないのと同じ事です。Shift_JISEUC-JP のように半角カナを扱える文字符号化方式を使えば半角カナを扱うことが出来ますし、ISO-2022-JP でも数値文字参照を使えば半角カナを記すことが出来ます。

メールで半角カナを使うな、と言う話はありますが、これは HTML とは別の話です。HTTPSMTP とでは全く事情が異なります。これらを混同しないようにしてください。

~ は本当に tilde なのか?

のけぞり度:

よく、初心者向け(?)に、URL の中の ~ は「チルダ」と読みます、などと説明している人がいます。

ある HTML が ISO-8859-1 などで書かれているなら、その中に書かれている ~ は tilde で間違いありません。しかし、それが Shift_JIS で書かれているなら注意が必要です。Shift_JIS は JIS X 0201 をサブセットとしており、JIS X 0201 において 0x7E で示される文字は tilde ではなく overline なのです。

これは、MS-DOS のディレクトリ区切り記号が日本語環境では円記号になっているのと同じ話です(英語環境ではバックスラッシュ)。RFC1738 において ~ が安全でない文字とされていたのは、このように別の文字が割り当てられている場合があるからです。

JIS X 0201 には、overline を tilde のような字形で表現しても良いという記述があります。ですから tilde のように見えること自体は問題ありませんが、そのような場合でも文字の呼称は overline であるとはっきり書かれています。ですから、Shift_JIS で 0x7E の文字を「チルダ」などと呼んではいけません。これは overline, 上線と呼ばなければならないことになっているのです。

それがどうしたと言われればそれまでですが、まあ知っていると面白い知識と言うことで覚えておくと良いかも知れません。


のけぞる本

HTML鳩丸倶楽部

水無月ばけら, MINAZUKI Bakera
E-mail: bakera@star.email.ne.jp