君はエノロコラを知っているか
- エノロコラとはUECの一部で今も語り継がれている黒歴史である.
- UECでは毎年11月頃に調布祭という学園祭に相当するものが開催されている.
- 昨年開催された第六十回調布祭でその事件は起きた.
第六十回調布祭の公式ページで、あろうことかトップページの「第六十回調布祭」の文字が「ツ靠サススイエノロコラ」と表示される問題が発生したのだ...
- なぜこのような問題が発生するに至ったのかを調べてみると, コンピュータに詳しくない人がコンピュータへの知識を深めるよい機会になると思ったので, 記事を書くことにした.
文字コードって何よ
- コンピュータで文字を扱うことは非常に多い.
- たとえばこの記事も文字の集まりだ.
- UNIXの話をすれば設定ファイルやスクリプトと呼ばれる簡単なプログラムも文字で構成されている.
- いわゆるプログラムを作るときも, ソースコードと呼ばれる文字で構成されたファイルを作ることから始まる.
一般に文字で構成されているファイルをテキストファイルと呼ぶ.
テキストファイルではないファイルのことをバイナリファイルと呼ぶ.
- 普通のプログラムとか画像ファイルとかはバイナリファイルである.
- でもコンピュータは本質的に数字しか扱えない→文字をそのままコンピュータで扱うことはできない.
そこで偉い人は考えた. 特定の数字と特定の文字を対応させて扱えばいいじゃん.
この考え方を文字コードと呼ぶ.
日本語の文字コードが抱える問題
- 日本語ではいろんな文字が使われている.
- 漢字
- ひらがな
- カタカナ
- アルファベット
- 各種記号
- もちろんそれぞれの文字に特定の数字が割り当てられている.
- しかし大問題が.
- いろんな団体がそれぞれ別の文字コードを作ってしまった.
- 結果としていろんな文字コードが併存する結果になってしまった.
- それぞれの文字コードでかかれた文書が膨大に存在するので, 統一されることなく今にいたっている.
日本語文字コードの主な種類
- Shift-JIS
- EUC-JP
- UTF-8
- ISO-2022-JP
エノロコラの原因とは
- エノロコラの原因はこうした文字コードが複数あることである.
- 調布祭公式ページ自体はEUC-JPという文字コードで書かれていた.
- しかしページのHTMLには「これはShift-JISで書かれているから, Shift-JISとして文字コードは解釈してね」という命令が書かれていた.
- ページを読み込んだブラウザはこの命令に素直に従ってEUC-JPで書かれているページにもかかわらずShift-JISとして解釈してしまった.
- 「調布祭」という文字をEUC-JPの文字コード表に照らし合わせてみると次のようになる. 16進数になっている.
c4b4 c9db bad7
- 今度はこの数字の羅列をShift-JISの表に照らし合わせてみる.
- c4 = (半角スペース)
- b4 = エ
- c9 = ノ
- db = ロ
- ba = コ
- d7 = ラ
- 確かにEUC-JPで「調布祭」と書かれたものを間違ってShift-JISで読むと「 エノロコラ」になってしまうことがわかる.
エノロコラを防ぐために
- 今どの文字コードを使っているのかを把握していることが必要.
- できれば使う文字コードはすべて統一しよう.