Unicode(
ユニコード)とはコンピュータ上で多言語の文字を単一の
文字コードで取り扱うために1980年代に提唱された
文字コードである。
ゼロックス社が提唱し、
マイクロソフト、アップル、
IBM、サン・マイクロシステムズ、ヒューレット・パッカード、ジャストシステムなどが参加する
ユニコードコンソーシアムにより作られた。1993年にISOでもISO/
IEC 10646の一部として標準化されたが、
Unicodeと完全に同一の規格ではない。
概要
Unicodeは世界で使われる全ての文字を共通の
符号化文字集合にて利用できるようにしようという考えで作られ、NT系の
Microsoft Windows (
Windows)、
Mac OS X、
LinuxやJavaなどでの内部コードとして利用されている。
元々16
ビットの文字集合で全ての文字の網羅を目指して開発されたが、符号位置
[Unicode Terminology English - Japanese, C, Unicode, inc.]が圧倒的に足りず、
Unicode 2.0以降では21
ビットの文字集合として規定されている。現在の
Unicodeの空間は
U+0000~
U+10FFFFである。当初の16
ビットの領域である
U+0000~
U+FFFFは、
Unicode 2.0以降では基本多言語面 (
BMP) と呼ばれ、ISO/
IEC 10646において
UCS-2で定義される16
ビットの範囲と同一である。一方ISO/
IEC 10646における
UCS-4は31
ビットの文字集合であり、21
ビットの
Unicodeとは別物である。
収録されている文字は、各国で標準として規定されている文字集合や実際に使用されている文字を持ち寄り、委員会により取捨選択されている。日本の文字については当初より
JIS X 0201、
JIS X 0208と
JIS X 0212を、
Unicode 3.1では
JIS X 0213の内容を収録している。
また収録においては同じ意味・目的の文字は、できる限り同じ符号位置に割り当てる方針を取っている。そのため、
CJK統合漢字(中国語、日本語、朝鮮語で使用される漢字が統合された領域)は大きな議論となった。各国のコードはISO/
IEC 10646とは別の組織で標準化されているため、厳密には違うものであるが、符号位置を共有する文字の間で非互換が生じないように慎重に標準化が進められている。
既存の
符号化方式との
相互運用性もある程度考慮されており、同じグリフ(字形)の文字であっても、歴史上・実用上の識別が求められる場合には互換領域がとられ、
Unicodeを介在して
文字コード変換を
行った際に、復元可能となるように考慮されている。しかしながら、他の
符号化文字集合(文字
符号化方式)との変換の整合性においては、いくつかの問題がある。たとえば、CP51932とeucJP-
MSのように既存
文字コード同士で
Unicodeとの対応が一部違うために
文字化けが発生することがある。
Unicodeの文字を表現する場合、"
U+"にその文字の符号位置を表す
16進数を続けた文字
列を使って表す。
BMPの場合は4桁、それ以上では必要に応じて5、6桁で表す。この符号位置を表す整数値を
Unicodeスカラ値と言う。