〜 その4 UTFを使用しない大技 〜 ※このページは Shift_JIS で符号化されています。
一番最初に書いたページにおきまして、私はこんなことを書いておりました。
……現状で使っている ISO-2022-JP は、その名の通り日本語の文字を符号化するためのものです。この符号化方法ですと、ラテン文字に関しては、たとえ特殊な記号がついているものであっても実体参照(文字参照)により表記することが可能ですが、それ以外の文字を表記したい場合、画像を用いるしか手がありません(嘘かも知れません。詳しいことは良く知らないので)。……
嘘でした。真っ赤な嘘でした。「文字参照」の名前を出しておきながら、その使い方の知識が ひどい具合に欠けていました。不正確な文章を公開していたことをお詫びいたします。
なにはともあれ、やってみましょう。百聞は一見にしかずです(始めにも書いた通り、このページは Shift_JIS で符号化されています)。
前に書いたページに習って、上から、ハングル・キリル・中国語簡体・ギリシャ・ヘブライ・アラビアです。ラテン文字は 書ける事が分かってますんで、ここでは省略します。ヘブライとアラビアは 右から左へ読むので 左側に箇条書きの印があるのはおかしいですが、勘弁して下さい(今回は、アラビア語もちゃんと「言葉」になっていると思います。やっと文字の並べ方だけは分かって来ました。読めないけど)。
ただし、表示されるかされないかが環境に依存してしまうのは一緒で、こちらでは 相変わらず Mozilla/5.0(rv:1.1) 以外のブラウザーは表示が不完全です。MSIE 6.0.2800.1106 では、UTF-8のページでは表示されていたヘブライ文字が なぜか出てこなくなりましたし、中国語簡体もダメです。Opera/6.05 は、頑張ってるんですが あと一歩といったところ。
先ほど ちらっと書きました通り、文字参照の仕組みを使います。
このページのHTMLソースを見て頂くと、例えば上のハングルの部分の正体は こんなになってます。
다음주 쯤 김대업 씨 수사결과 발표
これについては、「HTML4 で使える文字実体参照」のページの利用上の注意にある記述などを参考にして頂けば良いかと思います。HTMLでは、キーボードから直接入力できないとか、HTMLの文法上そのまま書くことが出来ないとか、そういった文字でも 実体参照や文字参照という方法で 記述し表示させる事が出来ます。で、実は、キーボードから直接入力できる文字であっても、その仕組みでもって表示させられるのです。もう少し正確に言いますと、実体参照は全ての実体が定義されているわけではないので限界がありますが、文字参照は 上に示したように数字で指定するので、ユニコードが割り当てられている文字であれば、ほぼ全てが表示できるのだそうです(上の例で言いますと、b2e4
という 一見 意味不明の数字がユニコード番号に当たります。今回は10進数に直すのが面倒くさかったので16進数形式でそのまま書きましたが、これはHTML4だから許されるので、本来は10進数で書くもののようです)。
そして、この文字参照で書かれた内容は 文字符号化方法には左右されないので、日本語を符号化する ISO-2022-JP などのファイルでも(表示する側が対応していれば)きちんと表示されるというわけです。
試しに違う符号化方法のページも用意してみましたので、ごらん下さい(内容は このページと殆ど同じです)。
お分かりの通り、すべての文字の番号を記憶するのは とうてい不可能です。書く際には、一つ一つの文字の番号を調べ、それを一つ一つ(&# と ; をくっつけながら)書いて行かなければいけないわけで、相当な手間になります(最初に「大技」という書き方をしたのも、この辺りが理由です)。ユニコード表から文字を選ぶと自動的に文字参照の記述形式を挿入してくれる、とかいうソフトウェアでも作らないと やってられません。
また、UTF-8 と同様に、表示するソフトウェアの対応状況が 必ずしも万全ではありません。そんなに需要の無い仕様ですから 対応が後回しにされているのも道理ですが、使おうとしても結果に不具合が生じるのであれば、やはり使うのは躊躇してしまいます。
この実験室も、もう少し「実験」が続くかも知れません。
このページの文字について、あるいは文章について、お気づきの点がありましたら、メール等でお知らせ下されば幸いです。