日本語環境でブラウザが実際どの程度の Character Entity を表示出 来るかのテストをするためにこのページを用意した。
ひと昔前には結構な Entity を解釈出来ないブラウザ(OSの機能まで 含めて)が普通だった...
この制限から、いくつかの言語が混在した文書を Web 上で書く事、 どんな環境でも文字化けせずに閲覧する事は非常に困難で、解決策と してはドキュメント自体を UTF-8 などの文字コードで用意するとい うような選択肢しか残されていなかった。
しかし、当時、UTF-8 をまともに扱えるエディタ自体が少なく、また、 UTF-8 においても、日本語での利用を考えた場合、人名、地名に利用 される漢字の多くの文字が割り当てられていない、OS やブラウザ、 あるいは利用しているフォントによっては文字化けする、といったポー タビリティ、汎用性の問題点もあった。
そんな状況の中で多言語化を扱う枠組として、UTF とは別に ISO-2022 という枠組が提唱され、一部で実装されてきたが、 広く一般に普及するという所までは至っていない。
ISO-2022 エンコードでは文字列中にプログラムでメタキャラクタとして利用さ れる文字、 エスケープシーケンスなどが出現してしまう事から、 処理系でのサニタイズなどの扱いが困難で、それらを考慮しない CGI プログラムなどから利用すると、しばしば問題を引き起こしてしまうと いったケースもあるようだ。
現在、日本語を利用する CGI プログラムなどではそのインターフェイス部分は character-set として EUC-JP (Extended Unix Code) が多く利用されているの は EUC では文字列中にメタキャラクタ、エスケープシーケンスが現れない事が保証されており、 処理が明快になるからである。
しかし、ISO-2022-JP ではなく、単に ISO-2022 と呼ばれた場合は、 文字コード ではなく、多言語を扱うエンコードの枠組 として存在するので、EUC-JP が ISO-2022 に内包されるケース というのが存在するそうだ。
また、文字コードとしては ISO-2022-JP-2 や ISO-2022-JP-3 という物も存在する。
CGI で良く利用される Perl 言語では 5.8 あたりから Unicode を扱う事 が可能となっている。
2004年現在においても UTF-16, UTF-32 や UCS といった次世代の文字 コードセット、エンコードへの移行が模索、検討されているといった 時代背景もある。
それらを表示するフォント側は、すでに大半が ISO-10646 という規 格 (UCS: Universal Multiple Coded Character Set) に乗っ取って 配置されている(はず、な)のだけれど、与えられた指示とそのフォン トを結び付ける部分は実装依存であり、うまく処理出来るものとそう でないものが混在している。
最近(2004/09) m17n-lib という多言語化ライブラリが発表されたが、本格的普及はまだこれから、 という段階にある。期待してます。-> m17n-lib
また、ベンダー(M$)によっては独自の解釈で、JIS と は異なった実装をしている場合があり、その上での利用を想定してい るものが軒並これに引きずられて実装するので、純粋に JIS 準拠を 目指した実装と衝突し、あちこちで問題となる。
例えば、\ と書いて、 \ ←が バックスラッシュ に見えずに 円記号に見えてしまうようなケースは、そのあおりを食らってい る証拠である。
そんなことどうでもいいじゃないか という声も聞こえてきそうだが、環境依存できちんと文字が表示出来 ないという事は、私の名前が しんいちろう と じんいちろう で同じだと言っているようなものなので、却下します。
是非、お手元の OS 及びブラウザでどの程度のエンティティを表現出 来るかテストしてみてください。
なお、X端末上で動く w3m などは、その親のターミナルプログラムの 影響を受けます。様々なターミナル、フォントとの組合せを試してみて下さい。
また、Emacsen 上での emacs-w3m も、Emacs21 上と XEmacs21.4 上 での結果はフォントの指定方法によって大きく変わってしまいます。むぅ...
私の手元での結果は、 こちら (Result - HTML Character Entity test) http://www.stained-g.net/wiki/shinichiro/pukiwiki.php?Result%20-%20HTML%20Character%20Entity%20test に置いてあります。
最後に、規格策定、フォント関連、エディタ、ブラウザ、OS、ライブ ラリ... など多くの方面で多言語化に取り組まれている開発者の皆様、 協力されているユーザの皆様に感謝します。
ここでのデータは HTML 2 以降で利用されている物で、HTML 4 あ たりまでの物を対象にする。 XHTML 1 ではさらに拡張されており、 XHTML 1 での Entity は、参考資料にあげた W3C のサイト で確認出来る。
数値による実体参照 Entity by Number (以降、数値参照)と、 名前による実体参照 Entity by Name (以降、名前参照)を一覧にしてみた。
なお、割当がない、該当しない所は、"--" ハイフン 2本で表示した。