案件ごとに「作業メモ」なるテキストファイルを作って、あれこれちょっとしたメモを残しているんだけれど、そのうちの一つが突然文字化けするようになった。
基本的に「UTF-8」で保存されているはずなのに、なぜかそのファイルを開くと「Latin-1」で開かれてしまう。どうも前回記述した内容の何かに引っ張られてLatin-1になっているような感じ。使っているエディタはサクラエディタなので、「開き直す」コマンドでUTF-8に変更すれば正しく開くけれど、毎回それではしんどい。
ググったところ「BOM」付きで保存すると文字コードを明示的に指定できるらしい。
以下、Copilot先生の解説
BOM(Byte Order Mark)とは、テキストファイルの先頭に付けられる目印のようなデータで、「このファイルはUnicodeで書かれていて、文字コードはこれですよ」とコンピューターに伝える役割を持っています。 もう少し詳しく言うと... - **Unicode系の文字コード(UTF-8, UTF-16など)**では、文字をバイト列に変換して保存します。 - そのとき、バイトの並び順(エンディアン)や文字コードの種類を明示するために、ファイルの先頭に数バイトの特別なデータを付けることがあります。それがBOMです。 - たとえば、UTF-8のBOMは EF BB BF という3バイトです。 BOMのメリット - テキストエディタやアプリケーションが文字コードを正しく判別しやすくなる。 - 特にWindowsのメモ帳やExcelなどでは、BOM付きのUTF-8でないと文字化けすることがあります。 BOMのデメリット - 一部のプログラム(特にWeb系やスクリプト言語)では、BOMがあると不具合を起こすことがあります。 - たとえばPHPやJavaScriptでは、BOMがあると「予期しない文字」として扱われることがあります。 豆知識 - BOMなしのUTF-8は「UTF-8N」と呼ばれることもあります(日本独自の表現です)。 - Webページやプログラムのソースコードでは、BOMなしが推奨されることが多いです。
という事で、うかつにBOMを付けるとjsやPHPでは不具合の元になりそうだけれど、.txtで文字化けが心配なときには便利な機能のようだ。
ちなみに、サクラエディタの場合は新規保存や名前を付けて保存の際のウィンドウにBOMを付けるかどうかのチェックボックスボックスがある。