UTF-8とUTF-8Nの違い
RubyでWebアプリケーションを作る際にDBも含めて文字コードをUTF-8に統一しようということになってUTF-8でコードを書いた。ところが何度試してもプログラムが動いてくれない。よくよく調べるとRubyが扱える文字コードは正確にはUTF-8Nという文字コードらしく、文字コードをUTF-8Nに変更してやるとすんなり動いたということがありました。
では、UTF-8とUTF-8Nはどこか違うのだろうか?
- UTF-8はファイルの先頭にBOMが付いている
- UTF-8Nはファイルの先頭にBOMが付いていない
BOMって何だろうと調べたらByte Order Markの略でコード識別のための特別なコードの事らしいです。BOMについてはWikipediaのUTF-8の項目内に詳しく書かれています。
基本的にUTF-8Nを使うようにしたほうがいいよという感じなのかな。普通UTF-8といったらUTF-8Nを指すみたいだけど、UTF-8とUTF-8Nの両方が指定できるようになっているエディタ*1では注意が必要のようです。