-
はじめに
CSVファイルを扱っていると、「BOMあり」「BOMなし」という言葉を目にすることがあります。
特にExcelで開いたときに文字化けしてしまった経験がある方は、この違いが大きな意味を持つことを知っておくと便利です。
この記事では、BOMの基礎から、Excelやシステムでの扱い方、確認方法まで解説します。
BOMとは?
BOM(Byte Order Mark)は、テキストファイルの先頭に付与される特殊な「目印」です。
文字コードを示すために使われ、特にUTF-8では以下の3バイトがBOMになります。これがあるファイルを「BOMあり」、ないファイルを「BOMなし」と呼びます。
BOMありとBOMなしの違い
BOMあり
-
Excelなどで開くと文字化けしにくい
-
日本語環境のExcelではBOM付きの方が安全に扱える
BOMなし
-
Linux系のシステムやプログラムでは一般的
-
余計なバイトが含まれないためシステム連携や自動処理で好まれる
Sakuraエディタで違いが分からない理由
Sakuraエディタはとても優秀で、UTF-8のBOMがあってもなくても正しく解釈して表示します。
そのため、見た目では違いが分からないのです。
他のソフトでは「」のような文字が先頭に表示されることもありますが、Sakuraではそうした問題は起きません。
BOMの有無を確認する方法
1. Sakuraエディタで確認
-
メニュー → ファイル → 文字コード指定して開く
-
「UTF-8」または「UTF-8 (BOM付き)」が表示される
2. バイナリエディタで確認
-
BOMあり:ファイル先頭に
EF BB BF
-
BOMなし:すぐに「ID,名前,点数」などの内容が始まる
3. コマンドで確認
-
Windows (PowerShell)
→ BOMありなら
239 187 191
が表示されます -
Linux
→ BOMありなら
ef bb bf
が確認できます
利用シーン別の使い分け
利用シーン おすすめ設定 理由 ExcelでCSVを開く場合 BOMあり(UTF-8 BOM) 文字化けを防ぎ、正しく読み込める プログラムやLinux環境で処理 BOMなし(UTF-8) 不要なバイトがなく安定処理できる BOMの有無を確認したい場合 バイナリやコマンド 確実に判別可能
まとめ
CSVファイルの「BOMあり/なし」は目で見える違いはなく、特にSakuraエディタではどちらでも正しく開けます。
しかし、Excelでの文字化けやシステム連携時の不具合を避けるためには、利用シーンに応じた使い分けが重要です。-
Excel → BOMあり
-
プログラム処理 → BOMなし
ぜひ状況に合わせて正しく選択してください。
-
「エディタ」カテゴリーアーカイブ
サクラエディタで好きな範囲で選択(矩形選択)して編集する方法
サクラエディタで重複行を削除する方法
サクラエディタのインストール手順
サクラエディタのインストール手順をメモしておきます。
サクラエディタのダウンロード
-
下記サイトへアクセスしてV2(Unicode版)の「sakura_install2-2-0-1.exe」をクリックするとインストーラをダウンロード出来ます。
⇒サクラエディタのダウンロードページ
サクラエディタのインストール手順
- ダウンロードした「sakura_install2-2-0-1.exe」をダブルクリックし、セットアップダイアログが表示されたら「はい」ボタンを選択します。
- 「次へ」ボタンを選択します。
- インストール先を選択して「次へ」ボタンを選択します。
- インストールするコンポーネントを選択して「次へ」ボタンを選択します。特にこだわりがなければデフォルトのままで良いです。
- 設定保存方法(ユーザ毎に設定を個別管理するか否か)を指定して「次へ」ボタンを選択します。
- プログラムグループ名を指定して「次へ」ボタンを選択します。
- 追加タスクを選択して「次へ」ボタンを選択します。
- インストール設定に問題なければ「インストール」ボタンを選択します。
- インストールが完了すれば以下の画面が表示されるので「完了」ボタンを選択します。
CSVファイルの項目をダブルクォーテーションで囲む方法
CSVファイルを扱っていると項目値をダブルクォーテーションで囲まれていないケースもあり、これを項目毎にダブルクォーテーションで囲ませたい時があります。こういう場合に手っ取り早くダブルクォーテーションを付与する方法をご紹介します。基本的にはEXCELとサクラエディタなどのエディタを併用する事で実現出来ます。
使用するソフト
- Microsoft Excel ※特にバージョンは問いません
- サクラエディタ ※秀丸など他のエディタでも可
CSVファイルへのダブルクォーテーションの付与手順
-
Excelで対象のCSVファイルを開きます。ここでは「sample.csv」を開いています。
「sample.csv」の内容は以下の通りです。
123a,b,cd,e,fg,h,i - Excelでcsvファイルを開いたらデータの最終行の次行へ以下の数式を入力します。今回は1行空けて見やすくA5セルへ入力しています。
⇒「=””””&A1&””””」
- A5セルへダブルクォーテーション付で値が表示されましたので次にA5セルの式をA5:C7セルまでコピペします。
※項目数、行数によってペーストする範囲は変更して下さい。
- ここまで項目単位にはダブルクォーテーションが付与された状態になったのでこの内容をサクラエディタへ貼り付けます。
ただこのままではカンマ区切りではなくタブ区切りの状態なので今度はこれをカンマ区切りへ変更します。
- 「Ctrl + R」で置換ダイアログを表示し、「置換前」の文字へ「\t」、「置換後」の文字へ「,」(カンマ)を入力し、正規表現へチェック後に「全て置換」を選択します。
- これでダブルクォーテーション付与のカンマ区切りのCSV形式の内容になったのでこの内容を元のファイルと差し替えれば完了です。
サクラエディタでタブ表示する方法
UTF-8のBOM有り、BOM無しの違いとは
エディタなどで文字コードを指定する際「BOM有り」と「BOM無し」という選択肢があります。この「BOM」とは何かをまとめておきます。
BOMとは?
-
まずBOMとは「バイトオーダーマーク (byte order mark) 」の略語となります。
バイトオーダーマークとはUnicode形式のデータを「ビッグエンディアン」、「リトルエンディアン」のどちらで保存しているのかという情報をデータの先頭に付与する情報のことです。
UTF-8の場合、先頭に3バイトのバイナリデータ「0xEF 0xBB 0xBF」が付与されたものが「BOM有り」の状態。付与されていない場合が「BOM無し」の状態となります。
どういう場合に「BOM有り」、「BOM無し」を使い分けるか?
- Unicodeの規格ではBOMは推奨していません。
- Web制作などでHTMLやPHPなどをエディタで編集する際はBOM無しを選択した方が一般的には問題は起こりにくいので無難です。但し、必ずしもBOM無しが正解というわけではないのは認識しておきましょう。
- 「Microsoft Office Excel」などはBOMがないとUTF-8だと認識できず、種々の問題が起こる。
- 基本的にはアプリケーション側でBOM有りが推奨されているケース以外ではBOM無しをデフォルト設定しておけば良いかと思われます。