出典: BOM [外語] Byte Order Mark 『通信用語の基礎知識』 更新年月日 2009/11/30,URL: https://www.wdic.org/ Unicodeの符号化のうち、UTF-16、UTF-32などで採用されているエンディアンネス識別符号。Unicode 3.0ではChapter13に書かれている。 [概要] Unicodeは「16ビット固定長」から始まった。同時期にISO/IEC 10646は「31ビット固定長」から始まった。しかし多くのコンピューターは8ビット程度をバイトという単位として扱い、更にエンディアンネスも様々なものが混在した。符号のエンディアンネスを識別可能にするためには、二つの解決法がある。 1. 符号のエンディアンネスを固定化する 2. 符号のエンディアンネスは自由にして、代わりに目印を付ける 前者を採用するのが最もスマートであるが、初期のUnicodeの符号化では後者が採用された。符号のエンディアンネスを先頭の文字で区別することから、これをバイトオーダーマーク(バイト順序マーク、BOM)という。 [特徴] ZWNBSP UnicodeおよびISO/IEC 10646では、U+FEFFとして「ZERO WIDTH NO-BREAK SPACE」(幅の無い改行しない空白、略してZWNBSP)という記号を定義している。これとバイト順が逆になるU+FFFEは同様に非文字とされ、未来永劫使用されない符号位置と定義された。 ZWNBSPは、見えないし改行もされないし文字幅もゼロの、存在自体を無視できる文字である。 かくして、ファイルまたはストリームの先頭のU+FEFFの順序を確認することで、符号化の種類やエンディアンネスを判別することができる。 使用は任意 BOMを付けるかどうかは任意であり、付けない場合もある。無い場合、エンディアンネスについては処理系依存ということになる。 但し、現在使われている「UTF-16」という符号化方法では明確に規定があり、BOMが無い場合はビッグエンディアン(UTF-16BE相当)として扱うことになっている。 なお、Microsoft Windowsで「Unicode」と俗称されている符号はUTF-16であり、通常はBOM付きリトルエンディアンで符号を入出力している。 仕様 各符号ごとに、次のような順序になる。 ● UTF-16 ・ ビッグエンディアン: 0xFE 0xFF ・ リトルエンディアン: 0xFF 0xFE ● UTF-32 ・ ビッグエンディアン: 0x00 0x00 0xFE 0xFF ・ リトルエンディアン: 0xFF 0xFE 0x00 0x00 UTF-8 UTF-8は、バイト順が明確に固定されている。従って、バイト順序マーク(BOM)といったものは必要とされない。 UTF-8では、U+FEFFは「0xEF 0xBB 0xBF」と3オクテットで符号化され、UTF-8の文書ファイル等では、それがUTF-8であることを示すために先頭に附されることが多い。但しバイト順をこれで決めているわけではないので、これをBOMと呼ぶことは現実には不正確である。 |
出典: バイト順マーク 『フリー百科事典 ウィキペディア日本語版(Wikipedia)』 最終更新 2022年9月27日 (火) 10:08 UTC、URL: https://ja.wikipedia.org/ バイト順マーク (バイトじゅんマーク、英: byte order mark) あるいはバイトオーダーマークとは、通称BOM(ボム)といわれるUnicodeの符号化形式で符号化したテキストの先頭につける数バイトのデータのことである。このデータを元にUnicodeで符号化されていることおよび符号化の種類の判別に使用する。 [概要] プログラムがテキストデータを読み込む時、その先頭の数バイトからそのデータがUnicodeで表現されていること、また符号化形式(エンコーディング)としてどれを使用しているかを判別できるようにしたものである。 経緯 UnicodeがはじまったころはアメリカではASCII、ヨーロッパなどではISO-8859、日本ではShift_JISやEUC-JPが主流であり、使用されている符号化方式がUnicodeであることを明確に区別する必要があった。その方法として、先頭のデータにテキスト以外のデータを入れることが発案された。 また、1文字が数バイトに渡るUnicodeでは、エンディアンの違いが認識できないと、例えばPowerPC Macintoshとx86 MS-DOSとの間で正常にデータの交換ができないため、この先頭バイトにより区別できるようにされた。 使用するべきか否か 実際にBOMを使用すべきか、あるいは使用すべきでないかは、Unicodeを利用したより上位の仕様によって定められることがある。"XML Media Types" (RFC 3023) では、XMLをUTF-16で符号化する場合は先頭のBOMを必須とし、またXMLを解釈するソフトウェアでは、先頭にBOMがあった場合はxml宣言におけるの指定よりも優先してエンコーディングを判別すべきとしている。JSONの場合は、ネットワークで送信する場合はBOMを付けてはならないとしている。 UTF-8は文字コードとしてASCIIを前提としたプログラムでもおよそ支障なく動作するように設計されているが、BOMによって正常に処理できなくなる場合がある。Unicodeの規格において、UTF-8においてBOMは容認されるが、必須でも勧められるものでもないとされている。また、データベースやメモリにロードするデータなど、内部的なデータ形式では、プログラムの性能や効率の観点から普通BOMは用いられない。 ・・・ |
出典: UTF-16 [外語] UCS Transformation Format-16,Unicode Transformation Format-16 『通信用語の基礎知識』 更新年月日 2012/06/18,URL: https://www.wdic.org/ UnicodeやISO/IEC 10646の符号化方法(CES)の一つ。サロゲートペアという方法で、16ビットの範囲を超える文字を扱えるようにした。RFC 2781で情報提供扱いで規定されている。 [起源] Unicode 3.0以降で採用された符号化方法である。 Unicodeは元々は「16ビット固定長」の文字集合であり、ISO/IEC 10646用語では基本多言語面(BMP)と表現される集合である。従って扱える文字数は216で最大65,536文字に限られた。 そこでこのUnicodeの中で未定義だった領域に、サロゲートと呼ばれる1024個の領域を二つ(0xd800〜0xdb00と0xdc00〜0xdf00)用意し、これを組み合わせ1,024×1,024=1,048,576個の文字を扱えるようにした。 この文字数は、BMPの大きさである65,536(216)の16倍に相当する。 [特徴] 構成 Unicodeには、U+0000からU+10FFFFまでのコードポイントが存在する。 元々16ビット固定長として作られたUnicodeであったが、16ビットを超える範囲を符号化するために、16ビットを二つ組み合わせて、16ビットを超える範囲の文字を表現することになった。この専用の記号文字をサロゲートといい、二つ組み合わせる手法をサロゲートペアという。 UTF-16では1バイトが16ビットになるが、これをバイトと呼ぶと混乱を招くため、UTF-16ではこれをコードユニットと呼ぶ。このように、16ビットのコードユニットを組み合わせてUnicodeを表現する符号化方法を、UTF-16という。 CESとCEF UTF-16は16ビット単位で文字が表現されるが、コンピューターではそれを8ビットごとに分解して処理することになるだろう。 エンディアンネス(ビッグエンディアンとリトルエンディアン)の違いがあり、どのようなオクテットシーケンスになるかは実装によるが、いずれにせよ現在のコンピューターは8ビット単位で情報を処理する。 文字コードの世界では、オクテット列で表わされる表現方法をCESという。一方でUnicodeの文字集合はCCSである。ここで問題となるのは中間の状態、UTF-16としての表現方法そのものであるが、このような16ビット形式での表現は新規に「CEF」という用語を作って呼ぶことにした。 つまり、Unicodeのコードポイント(CCS)→CEF(16ビット)→CES(8ビット)というように変形されていくことになる。 [仕様] サロゲートペア 新たに出来た領域をISO/IEC 10646の1面〜16面として割り当て、ISO/IEC 10646の00群00面〜00群16面の計17面、最大1,114,112文字種まで利用可能となった。この技術をサロゲートペアといい、このサロゲートペアを併用するUnicodeの符号化方法をUTF-16という。つまりUTF-16とは16ビットを基準とする可変長エンコードである。ISO/IEC 10646の符号UCS-2との差は、このサロゲートペアの機能の有無である。 ・・・ |
同義語・類義語 | 関連語・その他 |
---|---|
8bit | |
8ビット | |
B | |
Byte | |
byte | |
データ量 | |
バイト | |
このページは書きかけのページです | 更新日: |
同義語・類義語 | 関連語・その他 |
---|---|
BOM | ネットワークバイトオーダー |
Byte Order Mark | 文字符号化方式 |
byte order mark | 文字符号化スキーム |
báit ɔ́rdər mɑ́rk | ・ |
バイトゥ オゥーダゥー マゥァーク | Byte |
バイトゥ・オゥーダゥー・マゥァーク | báit |
バ́イトゥ・オゥ́ーダゥー・マゥァ́ーク | バイトゥ |
バイト オーダー マーク | バ́イトゥ |
バイト・オーダー・マーク | バイト |
バ́イト・オ́ーダー・マ́ーク | バ́イト |
バイトオーダーマーク | [名詞] |
ボム | 8ビット |
ビー オウ エム | ・ |
ビー オー エム | Order |
バイト順序マーク | ɔ́rdər |
バイト順マーク | オゥーダゥー |
バイトじゅんマーク | オゥ́ーダゥー |
・ | オーダー |
【 以下関連語 】 | オ́ーダー |
UTF-16 | [名詞] |
UCS/Unicode Transformation Format 16 | 命令 |
UCS Transformation Format-16 | 順序 |
Unicode Transformation Format-16 | 整頓 |
ユー シー エス・トランスフォーメーション・フォーマット・シクスティーン | 整列 |
ユニコード・トランスフォーメーション・フォーマット・シクスティーン | 順番 |
ユー ティー エフ 16 | 順位 |
・ | 等級 |
サロゲートペア | 種類 |
CES | 注文 |
CEF | ・ |
UTF-16BE | mark |
UTF-16LE | mɑ́rk |
Byte Order | マゥァーク |
バイトオーダー | マゥァ́ーク |
endian | マーク |
UTF-8 | マ́ーク |
エンディアン | [名詞] |
ビッグエンディアン | 印 |
リトルエンディアン | [他動詞] |
network byte order | 印を付ける |
更新日:2024年 3月30日 |