UTF-8のBOMあり/なしの違いと修正方法


テキストファイルの文字コードが「UTF-8」などのUnicodeの場合、そのファイルには「BOMなし」と「BOMあり」の2種類が存在し、時折さまざまな問題を起こします。たとえば「」などの文字が行頭に勝手に挿入・出力されてしまうとか、PHPなどの関数が使えなくなってしまうなど。これらは「BOMあり」になっていることが原因です。
「BOM」とは、「Byte Order Mark」の略で、Unicodeのファイルでバイト順マークを示すために先頭につける符号化された数バイトのデータのことです。

  • 本来BOMはなくても構わないもので、必須でも勧められるものではないが、特にMicrosoft製品の場合、BOMありでないとUTF-8であることが認識できず、種々の問題が起こります。(Microsoft Excelがその代表。ファイルにBOMがなければ、UTF-8/16/32なのか、それともまったく別の文字コードなのか識別できない)
  • 一方で、ホームページなどのWebサイト、Webシステムで使用されるファイルの場合は、一般的にBOMなしで作ります。これはなぜかと一言でいいますと、BOMありのファイルを正常に処理できないからです。

「BOMなし」と「BOMあり」のファイルの違いは、文字の先頭行に3バイトのシグネチャの有無だけで、それ以外の内容・データは全く同じものになります。この3バイトのシグネチャは「見えない」こともありますので、何らかのプログラム/アプリケーション上で誤動作や誤表示した場合、このBOMが原因であることに気づきにくい、ということも多々あります。

データを作っている本人がBOMについての知識ゼロですと、誤って適合しないデータを毎回自身で作ってアップして、誤動作/誤表示させた原因が自分にあることを理解・認識できず、同じことをいつも繰り返し…というのは、結構よく見かける光景ではありますね…。

各ソフト上でのBOMあり/なしの確認方法と修正方法について

ここでは、いくつかのソフトウェア上での確認方法と修正方法を提示します。
なお、Windows標準のメモ帳は、文字コードをUTF-8にしてファイル保存を実行すると、必ず「BOMあり」になります。(BOMあり/なし選択不可)メモ帳では修正できないのでご注意を。

  • フリーのテキストエディタ「TeraPad」は、「ファイル」→「文字/改行コード指定保存」で確認可。(ちなみに「UTF-8」がBOMあり、「UTF-8N」がBOMなし)この方法でBOMあり/なしファイルへの修正ができます。
  • シェアウェアでメジャーな「秀丸」は、「名前を付けて保存」の下に「エンコードの種類」という項目があり、その右に「BOMを付ける」というチェックボックスがあるのでここを確認。ここで修正可。
  • HTMLエディタの「DreamWeaver」の場合は、ファイルを開いた状態で上部のメニューから「修正」→「ページプロパティ」を順に選択。ページプロパティ画面に「Unicode 署名を含める(BOM)」というチェックボックスがある。このチェックボックスのON/OFFで、BOMあり/なしファイルの修正保存可。

なお、私の場合は、ほとんど「DreamWeaver」を使ってファイル修正しています。出先で支給されたパソコンの場合は、たいてい「TeraPad」か「秀丸」がインストールされていることが多いので、それを使って~といった感じですね。

スポンサーリンク
Google AdSense レクタングル
Google AdSense レクタングル

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
Google AdSense レクタングル