PHP工房トップ

HOME > HTML、PHPファイルでUTF-8使用時の注意点

HTML、PHPファイルで文字コードがUTF-8の場合の注意点(BOMあり、BOM無し)

HTMLやPHPなどWebで使うファイルはUTF-8がほぼ標準となって久しいですが、扱いには注意点があります。
通常のHTMLだけであれば問題にはならないですが、PHPなどのプログラムが絡むと問題になることがあります。

UTF-8にはBOMありBOMなしの2種類があり、
Webで使う.htmlや.phpファイルは基本的に
BOMなしで保存
、上書きする必要があります。

DreamWeaverではデフォルトでBOMなしに設定されているので問題ないですが、TeraPadやメモ帳には以下のような点があるので、UTF-8のファイルを扱う際は注意が必要です。
※TeraPadはインストールしたままの状態(設定を変更していない)であれば基本的に問題ないはずです。

DreamWeaverではデフォルトが以下のようになってるので問題ない。

※ちなみに以下の画面はファイルを開いた状態で「上部のメニュー」→「修正」→「ページプロパティ」です。

DreamWeaverのBOM変更方法

※ちなみにたまに誤解されている方を見かけますが、.phpファイルをDreamWeaverで扱うことはまったく問題ありません。私も様々エディタソフトを使ってきましたが、今ではHTMLも絡むなどの理由から作業効率を考慮し、ほとんどの場合DreamWeaverで作業しています。もちろんそれによる不具合も一度もありません。(CS4を使っています)
ある程度PHP記述にも対応しており、文法ミスや記述ミスも色分けで気づけます。

TeraPadは以下の点に注意

インストールしたそのままで使用していて、既存ファイルの上書きであれば特に問題ありませんが、文字コードを指定して保存する場合の文字コードの指定には注意点があります。必ず「UTF-8N」で保存します。
「UTF-8」の場合、「BOM有り」で保存してしまいますので問題が出ます。

TeraPadのBOM確認

また以下のオプション画面も要確認。(場所:表示⇒オプション)

 

メモ帳

メモ帳の場合、UTF-8で保存しても「BOMあり」でしか保存できないため、メモ帳は使用厳禁です。
基本Shift-JIS以外はメモ帳では扱わないこと。メモ帳はあくまでメモ帳です。。
メモ帳

 

ちなみに秀丸では・・・

秀丸でのBOM確認

 

BOMありにしてしまった場合の問題点

BOMは通常のエディタでは見ることはできないため、ソースを見てもわかりません。
PHPの関数の中にはソース上の一番最初に記述する必要があるものがあります。
session関数、header関数など。これの前になにかしらの文字列(BOMも文字列扱いになる)があると正常に機能しなくなってしまいます。BOMは ソース上では確認できませんが、ソースの一番初めに付いてしまうので、session、headerなどの関数の邪魔をしてしまいます。具体的にはWarningエラーが画面上に表示され、動作に問題が出ます。
※当サイトで配布しているニュースプログラムやダウンロードカウンタなどのログイン処理には「session」を使用していますので、BOMありで保存してしまうとエラーが画面内に表示されます。

主にPHPのSESSIONはログイン機能やフォームの入力データを多数のページで使い回す場合など。
header関数は文字コードの指定やリダイレクトなどに使われることが多いです。
BOMがあるとこれらの動作に問題が出ます。というか動作しません。

BOMをどうしても見たい場合はバイナリエディタを使えば確認できます。
始めの3バイト分にEF BB BFがあればそやつがBOMです。あえて見る機会はほぼ無いと思いますが。

配布中のファイルを編集する場合や、制作会社などでほかの人が作ったファイルを触ることはよくありますので、UTF-8の場合は注意が必要になるということです。

BOMありで保存してしまった、または疑いのある場合の対応策

以下いずれかの方法で可能ですが、その他のエディタでも同様の方法で可能かと思います。

1.DreamWeaverでファイルを開き上の画像部分で「Unicode 署名を含める(BOM)」のチェックを外す⇒適用⇒OKで完了。逆にチェックが付いていなければBOMなしになっているということです。

2.TeraPad等でUTF-8Nで保存しなおす。 

とにかく必ず不具合が出るというものではないのでよけいに厄介です。
またHTMLやCSSファイルであれば問題にはなりません。たぶん・・・。

そもそもBOMってなんやねん&いつ使うねんって話ですがね。。。w
調べればすぐに分かることですが、使わないものをいちいち調べていたらこの業界は身が持ちませんw
Web業界7~8年やってますが、BOMが必要なケースは一度もありません。。
ってことは少なくとも自分は一生使わないでしょう。



PHPメールフォーム(無料版)

PHPメールフォーム(有料版)

新着情報・更新履歴CMS(無料版)

投票・アンケートシステム(無料版)

テロップCMS(無料版)

写真ギャラリーCMS(無料版)

営業日カレンダーCMS(無料版)

営業日カレンダーCMS(有料版)

カレンダー予約フォーム(無料版)

カレンダー予約フォーム(有料版)

リンク集ページCMS(無料版)

アクセスカウンター(無料版)

ダウンロードカウンター(無料版)

メールフォームの各種カスタマイズならお任せ下さい
業務効率化が可能なPHPオリジナルCMS制作します

役立つかも?なもの

豆知識や役立ち事など

PHPについて

各種情報