さて今回は、Windowsにデフォでついてくる「メモ帳」でテキストファイルを保存したときに頭を悩ませる「BOM」と「改行コード」について考えてみようと思います。
メモ帳でUTF-8を使うとBOMがついてくる
メモ帳で「名前を付けて保存」すると嫌でもBOMが付いてきます。BOMなしUTF-8を得るには何かしらのツールが必要になります。そもそもBOMというのは、「このファイルの文字コードはUTF-8ですよー」という意味の制御コードです。文字化け防止にもなるいい奴なのですが、プログラミングでは邪魔になります。
<meta charset="utf-8"> <?php echo file_get_contents(/* BOMつきUTF-8空ファイル */); ?> <div style="background-color:#000;color:#fff;">上に隙間があるはずです。開発者ツールでみると制御記号が入っているのがわかります。</div>黒いdivの上に変な隙間があるのがお分かりいただけるかと思います。これがBOMの仕業です。
BOM対策
対策としては、- メモ帳を使わない(他のソフトを使う)
- 保存後に手作業で削除
メモ帳では改行コードがCR+LFになる
これもなかなかの問題です。Windowsでは基本的に改行コードはCR+LFです。きっとWindowsで作成したテキストがMac(CR派)やLinux(LF派)でも表示されるように、という配慮(であってほしい)です。
ただ、文字コードがCRだけ/LFだけのテキストファイルをメモ帳で開こうとすると、
メモ帳は「改行はCR+LF」と思っている → LF(CR)が単独でくる → メモ帳は改行だと思わない
といった具合で改行が潰れます。
改行コード問題への対策
- メモ帳を使わない(他のソフトを使う)
- 変換する
また、改行コード問題に関しては、moreコマンドを使えばWindows標準で変換できるようです。詳しくは テキスト・ファイルの行末コードを変更するとかの情報が参考になると思います。