出典: フリ?百科事典『ウィキペディア(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等の手段で文字符?化スキ?ムを指定しない場合は、ビッグエンディアンに決められている。
脚注
[
編集
]
注?
[
編集
]
- ^
UTFは、UnicodeではUnicode Transformation Formatの略、
ISO/IEC 10646
ではUCS Transformation Formatの略とされる。
出典
[
編集
]
- ^
“
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.”
- ^
“
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日
??。
?連項目
[
編集
]
|
---|
日本語
用の
文字コ?ド
|
|
---|
日本語を含む
多言語文字集合
|
|
---|
日本語以外用の
文字集合
|
|
---|
ソフトウェア
| |
---|
?分け
| |
---|
?念
| |
---|
?連トピック
| |
---|
カテゴリ
|