2007年10月8日月曜日

PHPの失敗談:UTF-8

PHPのプログラムを作成するとき、同じ間違いを犯す人は多いようだ。
ここでは、私の失敗談を披露しよう。
PHPのプログラムはエディタさえあれば作成できる。
最近のWebアプリケーションはUTF-8を標準にしていることが多いので、UTF-8で保存できるエディタを使う。
私の場合は、TeraPadを愛用している。しかし、十分に使いこなしていないことがわかった。
TeraPadにはUTF-8とUTF-8Nの2種類の文字コードがある。
最初は、余計なNの付いていない文字コードで保存していたが、PHPのセッションがまったく働かなかった。
少し細かく説明すると、PHPでは以下のような行を先頭に書いてセッション管理する。

ところが、先頭に書いてあるにもかかわらず、エラーとなる。
その理由はUTF-8がBOM(Byte Order Mark)という目に見えない制御文字をファイルの先頭に負荷していたからだ。一方、UTF-8NはBOMを出力しない。
そこで、ファイルの文字コードをUTF-8Nに変更したら、あっさり動作した。これで、結構時間をつぶしてしまった。
この失敗談が他の人の役に立つとよいのだが。

0 件のコメント: