検索に移動このページの名前に関して「バイト順マーク」への改名が提案されています。議論はこのページのノートを参照してください。バイト順マーク(バイトじゅんマーク)は通称BOM(ボム)といわれる、Unicodeの符号化形式で符号化したテキストの先頭につける数バイトのデータのことである。このデータを元にUnicodeで符号化されていることおよび符号化の種類の判別に使用する。概要[編集]プログラムがテキストデータを読み込む時、その先頭の数バイトからそのデータがUnicodeで表現されていること、また符号化形式(エンコーディング)としてどれを使用しているかを判別できるようにしたものである。[1]経緯[編集]UnicodeがはじまったころはアメリカではASCII、ヨーロッパなどではISO-8859、日本ではShift_JISやEUC-JPが主流であり、使用されている符号化方式がUnicodeであることを明確に区別する必要があった。その方法として、先頭のデータにテキスト以外のデータを入れることが発案された。MS-DOSとの間で正常にデータの交換ができないため、この先頭バイトにより区別できるようにされた。使用するべきか否か[編集]実際にBOMを使用すべきか、あるいは使用すべきでないかは、Unicodeを利用したより上位の仕様によって定められることがある。encoding="..."?>の指定よりも優先してエンコーディングを判別すべきとしている[3]。JSONの場合は、ネットワークで送信する場合はBOMを付けてはならないとしている[4]。UTF-8は文字コードとしてASCIIを前提としたプログラムでもおよそ支障なく動作するように設計されているが、BOMによって正常に処理できなくなる場合がある。Unicodeの規格において、UTF-8においてBOMは容認されるが、必須でも勧められるものでもないとされている。[5]また、データベースやメモリにロードするデータなど、内部的なデータ形式では、プログラムの性能や効率の観点から普通BOMは用いられない。8859-1に対しては、この2文字が先頭にくる文章を誤ってUnicodeと判断してしまう問題がある。2012年7月25日閲覧。UTF-8エンコーディングは1バイトずつ処理するためエンディアンの影響はない。このためテキストファイルや通信データの交換などに用いるのに適している。UTF-16やUTF-32エンコーディングは複数バイトずつ処理するためエンディアンの違いを認識する必要がある。システム内部で使用されていたが、次第にデータ交換でも使用されるようになった。2012年7月25日閲覧。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。