CGIでちょーはまったこと。TeraPadでは、UTF-8Nで保存するべし

こないだっから突然CGIが動かなくなってちょーはまってたのですが、解決したのでメモを残しておくのです。

まず結論から。
CGIUTF-8で書く時は、TeraPadでは「UTF-8N」で保存すること。


TeraPadで「UTF-8」保存すると、ファイルの頭にBOM(Byte Order Mark)なる3byteのコードが入ってしまい、これがゆえにshebang(一行目の#〜〜/ruby)が認識されなくてInternal Server Error となるそうな。
なんか前にもはまって、その時は「いーや、EUCにしとこ」とかで逃げた気がしてます。


こちら、参考にさせて頂きました。
http://gagago.cocolog-nifty.com/blog/2009/05/shift-jis.html
http://d.hatena.ne.jp/trinity777/20091101

WikiPediaとか、RFCとかチラ見した限りでは、UTF-8 / UTF-8N の呼び方は日本独自で公式に定義されているものではないそうです。


ついでに BOMってなんなのかしらというのを調べて、ちょこっとお勉強になりました。
ビッグエンディアンとリトルエンディアンがなんであるのかも初めて知りました。後ろの桁から並べるなんて、なんでそんなややこしいことをすんのかと思ってたけど、コンピュータにとって処理しやすいという利点があるのかー。いや、今となってはあんま関係ないと思うけど、メモリとかネットワークのリソースがしょぼかった頃は効果的だったんだろうなぁ。