人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

文字コードのUTF-8について、BOM無しと、BOM付き、というのがあったのですが、具体的に、どう異なるのでしょうか?
分かりやすく説明いただけますと嬉しいです。
よろしくお願い致します。

●質問者: comcom9
●カテゴリ:コンピュータ インターネット
✍キーワード:BOM UTF-8 文字コード
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● uzakadeu
●18ポイント

BOM付き(UTF-8)の場合、先頭に三バイトのBOMを付加してあります。BOMは具体的には0xEF 0xBB 0xBF です。

BOM無し(UTF-8N)にはこの三バイトが付きません。

◎質問者からの返答

ありがとうございます。


2 ● ardarim
●17ポイント

BOM=バイト順マーク(Byte Order Mark)は、文書ファイルの先頭に付ける EF BB BF という3バイトのバイナリデータです。ファイルの文字コード(符号化方式)がUTF-8であることを明示するために付ける場合があります。


BOM付きかBOM無しかはファイルの先頭にBOMデータを付けるか、付けないかが異なるだけで、ファイルの内容そのものや、文字コード(符号化方式)自体は同じUTF-8であって違いはありません。


但し、アプリケーションによってはBOM付きでないとUTF-8として認識できないもの、あるいはBOM無しでないとファイルを正しく取り扱えないものも存在しますので、アプリケーションや用途によって使い分ける必要があります。


いちおうWikipediaもリンクしておきます。

http://ja.wikipedia.org/wiki/UTF-8#.E3.83.90.E3.82.A4.E3.83.88.E...

◎質問者からの返答

ありがとうございます。


3 ● あのん
●17ポイント

http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E3%82%A...

BOMというのが、Byte Order Markの略で、

BOM付きというのは、そのファイルを読み込むプログラム側に「このファイルは文字コードがUnicodeのUTF-8形式で書かれてますよ」と、事前に通知してあげる状態のことを言います。

そのために、ファイルの先頭に目に見えない形で約3バイトほどのデータを付加しています。これがBOMです。

一方BOMなしというのは、この情報を付加しない形のものとなります。


BOMなしの場合、ファイルを処理するプログラムによっては文字エンコーディングがUTF-8なのか、UTF-16、UTF-32なのか、はたまた別の文字エンコーディングなのか判別がつかず、文字化けを起こしてしまう可能性があります。

そういう場合にはBOM付きで保存すると、文字エンコーディングを正しく判別することが出来て文字化けを防ぐことが出来ます。


ただ、必ずしもBOMをつければ良いというわけではなく、このBOMが原因となって逆にプログラムなどが正しく動作しなくなることもあるようです。

http://www.revulo.com/blog/20090129.html


上記はBOMが原因でPHPで処理がうまく動作しなかったという話ですが、こういったケースもあるので、BOM付き、BOM無しの両方の形式が存在しているようです。

◎質問者からの返答

ありがとうございます。


4 ● ko8820
●17ポイント

ファイルの先頭に挿入するBOM(Byte Order Mark)です。

ファイルの先頭だけ違います。

http://www.nishishi.com/blog/2007/05/unicode_bom.html

◎質問者からの返答

ありがとうございます。


5 ● ホーエンハイム
●17ポイント

Unicodeの当初の目的は、世界中の文字を16ビットで表すことでした。

ところがここで問題が起きました。


16ビットは2バイトなのですが、コンピュータ内でバイトを並べるには2つの流儀があります。1つはリトル・エンディアンといい、下位8ビットを先に、上位8ビットを後に記述するものです。インテルのCPUがこの方式をとっています。2つめはビッグ・エンディアンといい、下位8ビットを後に、上位8ビットを先に記述するものです。モトローラやSunのCPUがこの方式をとっています。


結局Unicodeは、リトル・エンディアンでもビッグ・エンディアンでも可能とするという選択肢をとりました。

そこで16進数で FEFF というBOM(Byte Order Mark)をテキストの先頭に置くことにしました。プログラムはテキストの先頭を読み取り、FF, FE の順番であればリトル・エンディアン、逆であればビッグ・エンディアンと解釈するようにしたのです。

これがBOM付きテキストです。

一方、BOM無しテキストは当然のことながら文字化けの原因となり、嫌われれました。


その後、Unicodeを16ビットで表すUTF-16(UTF-2)は衰退していき、インターネットの世界ではBOMを必要としないUTF-8が主流になっていきます。

◎質問者からの返答

ありがとうございます。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ