Plains フリーランス フロントエンドエンジニア

備忘録 2012.04.03

UTF-8とUTF-8N

PHP、Perlなどプログラムを組んでいると、何の問題も見受けられないのに、エラーが出まくるってことがあります。
そういう状態に陥ると2,3時間があっという間に過ぎ去り、疲労感にさいなまれ、仕事を投げ出したくなることがあります。

でも、どこかに問題があるからエラーが出るわけです。だから、問題はスクリプトではなく、他のところにあるのです。
他のところといえば、サーバーの設定だったり、取り扱う文字コードだったり、プログラムファイル自体の文字コードだったり。

最近よく使用される文字コードは万国共通のUnicodeが主流で、サーバーの設定もそのようになっていることがほとんどですから、当然プログラムファイルもUnicodeのUTF-8で保存します。ですが、ここに落とし穴が潜んでいます。

Unicodeの保存形式にはUTF-8とUTF-8Nの2種類があります。前者はバイトオーダーマーク(Byte Order Mark:略してBOM)付、後者はなし。BOMとは、「Unicodeの符号化形式で符号化したテキストの先頭につける数バイトのデータ」とのことですが、詳しいことはデザイナーの私には分かりません。要は、このBOMがプログラムの動作にときどき悪さをするということです。だからプログラムファイルをUnicodeで保存するときはUTF-8Nでなければなりません。

Go to Top