文字化けの原因は、意外と“UTF-8の違い”にあるかもしれません。
また、UTF-8で入力するのが標準なアプリなのに、読み込めないという問題も“UTF-8の違い”にあるかもしれません。
日本でパソコンが広く使われ始めたころ、日本語の文字コードとしてよく使われていたのは「シフトJIS(Shift_JIS)」でした。そのため、現在でもシフトJIS形式のファイルを標準として扱うアプリケーションは少なくありません。
一方で、最近では「UTF-8」を標準の文字コードとして使う流れがますます強くなっています。Webサイト、クラウドサービス、各種システム連携などでは、UTF-8のファイルを扱う場面がかなり増えてきました。
ところが、UTF-8のファイルが増えたことで、別のややこしい問題も出てきています。
それが「BOMあり」と「BOMなし」の違いです。「BOMあり」は「BOM付き」とも呼ばれます。
どちらもUTF-8であることに変わりはないのですが、ファイルの先頭に「BOM」と呼ばれる目印が付いているかどうかで形式が分かれます。そして、アプリケーションによっては「BOMありのUTF-8でないと読み込めない」、反対に「BOMなしのUTF-8でないと正しく扱えない」ということがあります。
つまり、同じUTF-8のファイルであっても、使うアプリやシステムによっては、BOMあり・BOMなしを変換する必要が出てくるのです。
今回の記事では、Pythonを使って、BOMありのUTF-8ファイルをBOMなしのUTF-8に変換する方法、またその逆に、BOMなしのUTF-8ファイルをBOMありのUTF-8に変換する方法を考えてみます。
xoBlos環境で、UTF-8 BOMのあり/なしを変換するツールを作成するなら、以前掲載した、下記の記事で紹介したPythonスクリプトが手軽そうです。
xoBlosからPythonを実行 (6):文字コード変換スクリプトの改良版
https://xoblos.hatenablog.jp/entry/2026/04/21/041655
PCにPythonのインストールは必要となりますが、以下のようなコマンドラインをxoBlosで指定して、使用できます。utf-8-sig という指定が、BOMありとなります。
BOMありUTF-8を、BOMなしUTF-8に変換
%ComSpec%
/c python SCRIPT\change_encoding.py INPUT\in.json OUTPUT\out.json utf-8-sig utf-8
BOMなしUTF-8を、BOMありUTF-8に変換
%ComSpec%
/c python SCRIPT\change_encoding.py INPUT\in.json OUTPUT\out.json utf-8 utf-8-sig













