Windowsでプログラムのソースコードやバッチファイル、Webサイトのファイルを編集するときに、避けて通れないのが「文字コード」と「BOM(ボム)」の問題です。
「メモ帳で編集して保存したら、なぜかプログラムが動かなくなった…」「システムにアップロードしたら文字化けした…」
その原因、実はWindowsのメモ帳が勝手に付ける「BOM」のせいかもしれません。
今回は、知っているようで知らない「BOM」の基本と、最近のWindowsメモ帳で「BOMなしUTF-8」を使って安全にファイルを保存する方法を解説します!
1. そもそも「BOM(ボム)」ってなに?
BOMとは、Byte Order Mark(バイトオーダーマーク)の略です。
簡単に言うと、「このファイルはUnicode(UTF-8やUTF-16など)という文字コードで書かれていますよ!」と、コンピュータに教えてあげるための『目印』のようなものです。ファイルの先頭に、人間の目には見えない特殊な数バイトのデータとしてこっそり追加されます。
なぜ「BOMなし(UTF-8N)」が推奨されるの?
文字コードを判別してくれる便利な目印なのですが、現在のWebサイトの開発やクラウドサービス、Linux環境などでは、逆に「BOMなしのUTF-8」が世界標準(推奨)になっています。
理由は、BOMなしのほうが従来の英語圏の標準(ASCII)と完全に互換性があり、余計なデータが含まれないためシステム間でエラーを起こしにくいからです。
2. メモ帳の「BOM」が引き起こすトラブル
Windowsに昔から入っている「メモ帳」は、デフォルトでUTF-8にBOMを付けて保存するという強いクセがありました。
これが原因で、以下のようなトラブルが頻発していたのです。
-
バッチファイルやスクリプトの文字化け・エラー プログラムがファイルの先頭にあるBOM(目印)を「謎のゴミデータ」と勘違いしてしまい、正常に実行できなくなる。
-
上書き保存による書き換えの罠 せっかく他のツールで「BOMなし」として作ったファイルであっても、一度メモ帳で開いて上書き保存すると、メモ帳が勝手にBOMを埋め込んでファイルを破壊してしまう。
3. 朗報!最近のWindows 10/11では「BOMなし」がデフォルトに
「メモ帳のせいでシステムがバグる!」と長年エンジニアを悩ませてきましたが、最近のWindows 10のアップデート以降、メモ帳の機能が大幅に改善されました。
なんと、現在のメモ帳は「標準(デフォルト)でBOMなしのUTF-8」で保存されるように仕様変更されたのです!これにより、普通に保存するだけでトラブルを回避できるようになりました。
➔ メモ帳で「BOMなしUTF-8」で保存する手順
最新のメモ帳であれば、以下の手順で確実に保存できます。
-
メモ帳でファイルを開き、メニューの「ファイル」 ➔ 「名前を付けて保存」を選択します。
-
画面下部にある「文字コード」のドロップダウンリストを確認します。
-
単に「UTF-8」と表示されていれば、それが「BOMなし」です。 そのまま保存すればOK!
💡 古いWindows環境や、逆に「BOM付き」にしたい場合は?
もし古いWindows 10の環境で「BOM付き」と「BOMなし」が分かれている場合は、ドロップダウンリストから明確に「UTF-8(BOMなし)」を選択してください。 (逆に、古いシステムとの連携でどうしてもBOMが必要な場合は「UTF-8(BOM付き)」を選びます)
※お使いのWindowsが古く、メモ帳に「BOMなし」の選択肢がそもそも存在しない場合は、メモ帳を使うのを諦めて「VS Code」や「サクラエディタ」などの外部テキストエディタを使用するか、専用のツールでBOMを削除する必要があります。
4. ファイルが文字化けしたときのチェック方法
もしメモ帳でファイルを開いたときに中身が文字化けしてしまっている場合は、ファイルの文字コードとメモ帳の認識がズレています。
そんな時は、「ファイル」 ➔ 「名前を付けて保存」を開き、現在そのファイルが何の文字コード(ANSI、UTF-8、UTF-16など)として認識されているか、ドロップダウンリストの初期表示をチェックしてみてください。
正しい文字コードに選び直して保存し直すことで、文字化けを直せる場合があります。
まとめ
Windowsのメモ帳は、アップデートによって「BOMなしUTF-8」が標準になり、以前に比べて圧倒的に使いやすく、プログラミングやシステム運用にも耐えるツールに進化しました。
しかし、古いファイルを開くときや、環境によってはまだまだBOMの有無がエラーの原因になります。
「テキストの保存はUTF-8の『BOMなし』が基本!」ということを頭の片隅に置いておくと、いざという時のトラブルシューティングがスムーズになりますよ!
