한국   대만   중국   일본 
UTF-16 - Wikipedia コンテンツにスキップ

UTF-16

出典: フリ?百科事典『ウィキペディア(Wikipedia)』

UTF-16 (UCS/Unicode Transformation Format 16 [注? 1] ) とは、 Unicode および ISO/IEC 10646 の、符?化フォ?ムおよび符?化スキ?ム( 文字符?化方式 を?照)のひとつである。

UTF-16では、1 文字 が、 16ビット の符??位が1つまたは2つで符?化される。これが「-16」の名の由?である。 基本多言語面(BMP) ?の文字は、符??位1つの16ビットで表される。BMP以外の文字は、符??位2つの32ビットで表される。なお、UTF-16は2 バイト コ?ドだと誤解されることがあるが、このように4バイトのこともあるため間違いである。

Unicodeにおいては、?密には、文字符?化フォ?ム( : Character Encoding Form )の1つの名?であり、かつ、UTF-16符?化形式のための文字符?化スキ?ム( : Character Encoding Scheme )の1つの名?でもある。UTF-16符?化フォ?ムのための文字符?化スキ?ムには、UTF-16の他に UTF-16BE UTF-16LE がある。

符?化 [ 編集 ]

UTF-16では、Unicodeの 代用符?位置 を除いた符?位置(Unicodeスカラ値という)を、16ビット符?なし 整? を符??位とした符??位列で表す。符??位列は1つまたは2つの符??位からなる。すなわち、合計は16ビットまたは 32ビット である。

BMPに含まれる U+0000 ? U+D7FF U+E000 ? U+FFFF は、そのまま符??位1つで表す。BMP以外の U+10000 ? U+10FFFF は、表のようにビットを配分して、符??位2つで表す。

スカラ値 UTF-16 備考
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx
000uuuuuyyyyyyxxxxxxxxxx 110110wwwwyyyyyy 110111xxxxxxxxxx wwww = uuuuu - 1

このとき使われる、 U+D800 ? U+DFFF の符?位置を、代用符?位置(Surrogate Code Point)と呼び、BMP外の1つの符?位置を表す連?した2つの代用符?位置のペアを サロゲ?トペア と呼ぶ。代用符?位置に使うため、BMPのこの領域には文字が??されておらず、UTF-16以外の UTF-8 UTF-32 では使用されない。

Unicodeの符?位置の最大値がU+10FFFFなのは、それがUTF-16で表せる最大値だからである。

UTF-16符?化フォ?ムで表現された文字は、16ビット符?なし整?の符??位列であり、プログラム?部での?理には都合がよいが、それでもって情報交換のためにファイルの?み書きや通信を行う場合は、適?な符?化スキ?ムにより、バイト 直列化 する必要がある。

符?化スキ?ムには、UTF-16、UTF-16BE、UTF-16LEの3種類ある。UTF-16BEは、16ビット整?を ビッグエンディアン で直列化する。UTF-16LEは、 リトルエンディアン で直列化する。UTF-16BE、UTF-16LEの場合は、 バイト順マ?ク (BOM) の付?は許されない。UTF-16の場合は、BOM でエンディアンを明示するか、上層のプロトコルで指定されておらずBOMも付?しない場合はビッグエンディアンにするよう決められている [1]

比較 [ 編集 ]

UTF-8 UTF-32 と比較して、一般的な日本語が主?の文章ではUnicode符?化方式の中では最小サイズとなる。 追加面 の文字が含まれる場合、バイト順にソ?トしても符?位置順とはならない。また、UTF-8と違い ASCII 互換ではない。

Shift_JIS と比較して、Shift_JISでは1バイト文字と、2バイト文字の1バイト目と2バイト目の値範?が一部重複しているが、UTF-16では1符??位文字、サロゲ?トペアの前半の符??位、後半の符??位がすべて異なる値範?を取る。そのため、Shift_JISであった、例えば「a」で?索すると2バイト目にマッチする場合がある、途中から?みこむと文字の?切りがわからないときがある、1バイト目や2バイト目が欠落した場合、後?の文字すべてが文字化けする可能性がある、などの問題は?生しない。UTF-16では欠落があっても影響を受けるのはその文字だけである [2]

利用 [ 編集 ]

UTF-16 符?化フォ?ム は、 Windows Java J2SE 5.0以上)で、?部表現に使われている。Windowsの?部表現では、16ビット符?なし整?を符??位とするUTF-16符?化フォ?ムとして扱い、ファイルなどでは、BOMあり(リトルエンディアン)のUTF-16 符?化スキ?ム が主である。

TCP/IP ネットワ?クでは、プロトコルヘッダやMIME等の手段で文字符?化スキ?ムを指定しない場合は、ビッグエンディアンに決められている。

脚注 [ 編集 ]

注? [ 編集 ]

  1. ^ UTFは、UnicodeではUnicode Transformation Formatの略、 ISO/IEC 10646 ではUCS Transformation Formatの略とされる。

出典 [ 編集 ]

  1. ^ The Unicode Standard Version 12.0 ” (PDF) (English). The Unicode Consortium. p. 131 (2019年3月). 2019年5月12日 ??。 “The UTF-16 encoding scheme may or may not begin with a BOM. However,when there is no BOM, and in the absence of a higher-level protocol, the byteorder of the UTF-16 encoding scheme is big-endian.”
  2. ^ FAQ - UTF-8, UTF-16, UTF-32 & BOM ” (English). The Unicode Consortium (2017年6月27日). 2019年5月12日 ??。

?考資料 [ 編集 ]

用語の日本語表記は次を?考にした。 Unicode Terminology English - Japanese ”. Unicode, Inc. 2010年1月1日 ??。

?連項目 [ 編集 ]