重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

LinuxではUTF8のBOMなし、UTF8のBOM付きってどちらが主流なのでしょうか?

A 回答 (4件)

BOMは本来的にはバイトオーダーを示すもので、UNICODEのような1語が複数バイトにまたがるエンコードでは必要だが、バイト単位のUTF-8では本質的に不要なもの。

今のLinux環境だとUTF-8以外の文字コードは実質的にないのでBOMはないのが普通です。Unicodeの規格上はBOMは禁止はされていないが推奨もされていません。
Windowsでは一部ソフトウェアがBOMをみてUTF-8とSJIS、UTF16を識別するため必要になっていますね。ただWindows10以降のメモ帳などBOMなしUTF-8でもおおよそ正しく判定できるようになっているので基本BOMなしでも構わないと思います。
    • good
    • 2
この回答へのお礼

ありがとう

ご回答ありがとうございました!

お礼日時:2025/04/25 21:43

無しが主流。

というか、BOM付きは邪魔です。

Linuxにはテキストファイルを扱う仕組がたくさんあります。
これらは、基本無変換なので、BOMがとても相性が悪い。

cat で複数テキストを結合: 2ファイル目以降のBOMがそのまま残る。
split でファイル分割: 2ファイル目以降にBOMは追加されない
等。
スクリプトとして実行しようとすると、無視できずに文法間違い扱いされる
シバン https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%90 … を使って実行ファイルが作れない。
    • good
    • 1
この回答へのお礼

ありがとう

ご回答ありがとうございました!

お礼日時:2025/04/25 21:49

BOMとはByteOrderMarkという意味なので、UTF16とかUTF32というエンコーディングのためのもので、UTF8にも一応定義はされていますが、そもそもByteの順序を示すというのはUTF8には不要なことです。



Microsoft以外の世界でも、BOM付きのUTF16等を機械的にUTF8に変換すると残ってしまうこともツールによってはあるので、BOM付きUTF8が使われているケースもありますが、誤変換に近いもので、滅多にありません。
BOM付きUTF8を読み込みは出来てBOMを無視するツールは多数あると思いますが。無視せずにエラーになるツールも多いです。

BOM付きUTF8は、Microsoftが一部のソフトで使っていて、それに対応せざるを得ないMS以外製のWindows向けソフトでも使用可能な程度というのが現状です。Microsoftが「UTF8にもBOMを付ける」という独自路線を取ったのは、日本語データだと、シフトJISとUTF8の自動判断が間違えることがあるということからだと思います(判断を間違えるといわゆる「文字化け」発生)。「BOM付きUTF8」であればシフトJISとの誤判断はないでしょう。

Unix/LinuxではUTF8登場以前は、EUC-JPというエンコーディングで日本語を扱うケースが90%以上でした。EUC-JPとUTF8では誤判断はないでしょう。
    • good
    • 1
この回答へのお礼

ありがとう

ご回答ありがとうございました!

お礼日時:2025/04/25 21:47

Linuxでは基本的に文字コードが異なるファイルを同一環境でオープンすることは想定されていないと思います。

それ故、PC環境がutf-8の場合、扱うファイルはBOM無しになると思います。
また、Linuxでは昔からnkf等の文字コードのコンバータプログラムが充実していますから、BOM有り/無し、UTF-16ファイルを利用する場合でも、コンバータで自身の環境文字コードに変換して使用するのが普通だと思います。
要するに厄介なのはWindows環境です。Windowsでは文字コードが固定されないため、現在はShiftJISとUTF-8を両方扱えないと困難な場合がたくさんあります。エディタやソフトウエアが自動判別するためにはBOM付きが必要になりますね。そのややこしい余波がLinux環境にも押し寄せることになります。
    • good
    • 2
この回答へのお礼

ありがとう

ご回答ありがとうございました!

お礼日時:2025/04/25 21:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!