通信用語の基礎知識 戻る
アスカネットワークサービス

Unicode

読み:ユニコード
外語:Unicode , Unikodo エスペラント
品詞:固有名詞
2000/10/27 作成
2008/04/08 更新

ASCIIなどの英数文字や日本語を始め、支那語・台湾語・朝鮮語などの漢字文字、梵字やキリル文字等も含め、全ての国語文字のコード化を目標とする文字コード仕様のこと。

策定

Unicodeは米国の「Unicodeコンソーシアム」という団体により策定されている。

このUnicodeコンソーシアムとISOは直接無関係だが、しかしISOと連携を取り合って規格が作られている。こうして作られたISO/IEC 10646が公的規格となっている。

Unicodeコンソーシアムは、Unicodeについて、次を標榜している。

  • Unicodeは、全ての文字に固有の番号を付ける (Unicode provides a unique number for every character)
  • プラットフォームに依存しない (no matter what the platform)
  • プログラムにも依存しない (no matter what the program)
  • 言語にも依存しない (no matter what the language)

略史

バージョンごとの差異については後述する。

  • 1991(平成3)年10月: Unicode 1.0 Vol.1
  • 1992(平成4)年6月: Unicode 1.0 Vol.2
  • 1993(平成5)年: Unicode 1.1
  • 1996(平成8)年7月: Unicode 2.0 (ハングルの移動、サロゲート導入)
  • 1998(平成10)年: Unicode 2.1
  • 1999(平成11)年9月: Unicode 3.0 (Ext-Aを追加)
  • 2001(平成13)年3月: Unicode 3.1 (Ext-Bと言語タグを追加)
  • 2002(平成14)年3月25日: Unicode 3.2.0 (JIS X 0213正式対応、異体字セレクタ1〜16追加)
  • 2003(平成15)年4月17日: Unicode 4.0.0 (異体字セレクタ17〜256追加)
  • 2004(平成16)年3月30日: Unicode 4.0.1
  • 2005(平成17)年3月30日: Unicode 4.1.0
  • 2006(平成18)年7月14日: Unicode 5.0.0
  • 2008(平成20)年4月4日: Unicode 5.1.0

Unicode 5.1.0までで、利用可能な文字の種類は次のとおりである。

文字番号の割り当てについては、各言語面の項目を参照のこと。

ISO 639の言語コードも併記する。

00面 BMP U+xxxx

Unicode 5.1.0までで、利用可能な文字の種類は次のとおりである(文字番号順)。

対応する言語類のみ表記。詳細は基本多言語面(BMP=Basic Multilingual Plane)の項目を参照のこと。

  • Basic Latin (基本ラテン文字、ASCII)
  • Latin-1 Supplement (西欧のラテン文字、ISO/IEC 8859-1)
  • Latin Extended (東欧、北欧などのラテン文字)
  • Greek and Coptic (現代ギリシャ語[gre、ell、el]、コプト語[cop])
  • Cyrillic (キリル文字、ロシア語[rus、ru]など)
  • Armenian (アルメニア語[arm、hye、hy])
  • Hebrew (ヘブライ語[heb、he])
  • Arabic (アラビア語[ara、ar])
  • Syriac (シリア語[syr]) (3.0〜)
  • Thaana (ターナ文字) (3.0〜)
  • NKo (マネンカ文字、マンディンゴ語[man]) (5.0.0〜)
  • Devanagari (デヴァナガリ文字、サンスクリット語[san、sa])
  • Bengali (ベンガル語[ben、bn])
  • Gurmukhi (グルムキー文字、パンジャブ語[pan、pa])
  • Gujarati (グジャラート語[guj、gu])
  • Oriya (オリヤー語[ori、or])
  • Tamil (タミル語[tam、ta])
  • Telugu (テルグ語[tel、te])
  • Kannada (カンナダ語[kan、kn])
  • Malayalam (マラヤーラム語[mal、ml])
  • Sinhala (シンハラ語[sin、si]) (3.0〜)
  • Thai (タイ語[tha、th])
  • Lao (ラオ語[lao、lo])
  • Tibetan (チベット語[tib、bod、bo])
  • Myanmar (ビルマ語[bur、mya、my]) (3.0〜)
  • Georgian (グルジア語[geo、kat、ka]) (4.1.0〜)
  • Hangul (ハングル朝鮮語[kor、ko])
  • Ethiopic (エチオピア文字、アムハラ語[amh、am]) (3.0〜)
  • Cherokee (チェロキー語[chr]) (3.0〜)
  • Unified Canadian Aboriginal Syllabics (カナダ原住民音節文字) (3.0〜)
  • Ogham (オガム文字(古代ケルト文字)) (3.0〜)
  • Runic (ルーン文字(古代ゲルマン文字)) (3.0〜)
  • Tagalog (タガログ語[tgl、tl]) (3.2〜)
  • Hanunoo (ハヌノオ語(フィリピンの民族語)) (3.2〜)
  • Buhid (ブヒッド語(フィリピンの民族語)) (3.2〜)
  • Tagbanwa (タグバンワ語(フィリピンの民族語)) (3.2〜)
  • Khmer (クメール語[khm、km]) (3.0〜)
  • Mongolian (モンゴル語[mon、mn]) (3.0〜)
  • Limbu (リンブ文字) (4.0.0〜)
  • Tai Le (タイ・レ文字) (4.0.0〜)
  • New Tai Lue (新タイ・ルー文字) (4.1.0〜)
  • Buginese (ブギ語[bug]) (4.1.0〜)
  • Balinese (バリ語[ban]) (5.0.0〜)
  • Sundanese (スンダ語[sun、su]) (5.1.0〜)
  • Lepcha (レプチャ語) (5.1.0〜)
  • Ol Chiki (サンターリー語([sat]) (5.1.0〜)
  • Glagolitic (グラゴール文字(古スラヴ文字)) (4.1.0〜)
  • Coptic (コプト語[cop]) (4.1.0〜)
  • Tifinagh (ティフナグ文字、トゥアレグ語) (4.1.0〜)
  • CJK Unified Ideographs (CJK統合漢字)
  • Yi Syllables, Radicals (イ文字 音節、部首) (3.0〜)
  • Vai (ヴァイ語 [vai]) (5.1.0〜)
  • Syloti Nagri (シロティ・ナグリ文字) (4.1.0〜)
  • Phags-pa (パスパ文字) (5.0.0〜)
  • Saurashtra (サウラーシュトラ文字) (5.1.0〜)
  • Rejang (ルジャン文字) (5.1.0〜)
  • Cham (チャム諸語[cmc]) (5.1.0〜)

01面 SMP U+1xxxx

補助多言語面(SMP=Supplementary Multilingual Plane)。

古代文字や記号類など、日常滅多に使わないような文字がここに格納されている。

  • Linear B Syllabary, Ideograms (線文字 B音節、B表意文字) (4.0.0〜)
  • Aegean Numbers (エーゲ数字) (4.0.0〜)
  • Ancient Greek Numbers (古代ギリシャ数字) (4.1.0〜)
  • Ancient Symbols (5.1.0〜)
  • Phaistos Disc (ファイストス文字(円盤文字)) (5.1.0〜)
  • Lycian (リキア文字) (5.1.0〜)
  • Carian (カリア文字) (5.1.0〜)
  • Old Italic (オールドイタリック体) (3.1〜)
  • Gothic (ゴシック体) (3.1〜)
  • Ugaritic (ウガリト楔形文字) (4.0.0〜)
  • Old Persian (古代ペルシャ語[peo]) (4.1.0〜)
  • Deseret (デゼレット・アルファベット) (3.1〜)
  • Shavian (シェイヴィアン文字) (4.0.0〜)
  • Osmanya (オスマン文字) (4.0.0〜)
  • Cypriot Syllabary (キプロス音節文字) (4.0.0〜)
  • Phoenician (フェニキア文字) (5.0.0〜)
  • Lydian (リディア文字) (5.1.0〜)
  • Kharoshthi (カローシュティー文字) (4.1.0〜)
  • Cuneiform (楔形文字) (5.0.0〜)
  • Byzantine Musical Symbols (ビザンティン様式 音楽記号) (3.1〜)
  • Musical Symbols (音楽記号) (3.1〜)
  • Ancient Greek Musical Notation (古代ギリシャ音楽記号) (4.1.0〜)
  • Tai Xuan Jing Symbols (太玄経記号) (4.0.0〜)
  • Counting Rod Numerals (算木、支那・日本の計算記号) (5.0.0〜)
  • Mahjong Tiles (麻雀牌) (5.1.0〜)
  • Domino Tiles (ドミノ牌) (5.1.0〜)

02面 SIP U+2xxxx

補助漢字面(SIP=Supplementary Ideograph Plane)。

CJK Ideograph Extension Bがここにあり、00面と合わせて康煕字典の全ての字が揃う。

14面 SSP U+Exxxx

補助特殊用途面(SSP=Supplementary Special-purpose Plane)。

15面、16面 SSP U+Fxxxx、U+10xxxx

外字領域。

Unicode 1.0〜1.1

元々は、ISO/IEC 10646-1によって定められる31ビット固定長文字コード規格のUCS-4で、00群00面(上位16ビットがすべて0となる領域)のことを意味していた。これは基本多言語面(BMP)と呼ばれ、これを16ビットで表現したものをUCS-2と呼ぶ。最大で65,536文字が表現可能だった。

多国語が必要な環境で歓迎され、HTMLなどの文書やWindows NTなどのOSで採用されたが、16ビット固定長では文字数の制限もあり世界中の文字を収録することは到底不可能なことだった。

Unicode 2.0〜2.1

そこでUnicode 2.0からサロゲートペアと呼ばれる方式で、必要に応じて2バイト(1バイトは16ビット)で1文字を表現することで文字を大幅に増やす方式(UTF-16)を採用した。これにより、扱える文字数が合計で220+216-2048(サロゲート)で、最大1,112,064字となった。この版では枠組みが決まっただけで、その領域に格納する文字までは決められていない。

また「連結可能文字」というものも作られ、例えば、と連結用ので表現するようなことも可能となった。もちろん、単に表現可能ということだけであって、それを処理できる処理系があるかどうかは、Unicodeの規格としては関与するところではない別の問題である。

Unicode 2.0の登場により、16ビット固定長という概念は完全に崩壊したといえる(元々無理だったのだが)。

世界中の大多数には無関係のことだが、U+3400〜4DFFに置かれていたハングルがU+AC00〜D7FFに移動され増やされた。ハングルに関してのみ、Unicode 1.1迄とUnicode 2.0以降は非互換となる。

Unicode 3.0

Unicode 3.0になり、ようやく不足極まっていた漢字文字が増やされることになった。

Unicode 1.1ではハングルが置かれていたBMP領域(U+3400〜U+4DFF)をCJK統合漢字 拡張-A(CJK Ideograph Extension A; Ext-A)とし、6,582文字の漢字が増やされている。

Unicode 3.1

Unicode 3.1からは、更に漢字を増やすため遂にBMPを超える範囲の文字も規定された。サロゲート領域(U+20100〜U+2A6D6)にCJK統合漢字 拡張-B(CJK Ideograph Extension B; Ext-B)として42,711文字が追加されている。

言語タグ

また、U+E00nnというコード領域に現在の言語を表わすための言語タグと呼ばれる言語指定コードなどが追加されている。

これは例えば「骨」のように日台支鮮で字形が異なる文字を、文字のコードポイントはそのままに言語で識別しようというものである。

またU+E007Fというコードを入れると、それ以降の言語タグは一切無視されるという仕様もある。

Unicode 3.2

仕様として公式にJIS X 0213への対応が明記された。

異体字セレクタ(Variation Selector)1〜16が追加された。これは従来、異体字タグとも呼ばれていたものである。詳細は後述する。

Unicode 4.0.0

異体字セレクタ(Variation Selector)が17〜256まで追加された。

第3面の全域がreserved(予約)として、記述が追加された。

異体字セレクタ

異体字セレクタはUnicode 3.1頃から検討されていた包摂文字コードの切り替え機能である。

全部で256種用意され、1〜16はU+FE00〜U+FE0F、17〜256はU+E0100〜U+E01EFに割り当てられている。

Unicode 4.1.0

コプト語や古ペルシャ語など、対応言語の追加。

Unicode 5.0.0

BMP内にNKo、バリ文字、ラテン文字拡張CおよびDが追加され、サロゲート領域にフェニキア文字、楔形文字、Counting Rod 数字が追加された。

Unicode 5.1.0

BMP内にスンダ文字、レプチャ文字、オルチキ文字、ヴァイ文字、サウラーシュトラ文字、ルジャン文字、チャム文字と、拡張キリル文字が追加された。

SMP内にAncient Symbols、ファイストス文字(円盤文字)、リキア文字、カリア文字、リディア文字、麻雀牌、ドミノ牌が追加された。

当初

Unicodeは16ビット固定長を前提として誕生し発展したため、大きくBMPとそれ以外に分けられている。

BMPは当初、次の4領域に分けられていた。

  • A(Alphabet)領域 (U+0000〜U+4DFF)
  • I(Ideograph)領域 (U+4E00〜U+9FFF)
  • O(Open)領域 (U+A000〜U+DFFF)
  • R(Restricted)領域 (U+E000〜U+FFFD)

しかしこの枠組みについては後の拡張によって崩壊しており、現在においては名残りとして残るのみである。

現在

Unicodeでは、文字コードの0x10000ごとの区切りとして面(プレイン=Plane)と呼ぶ。現在は各面について名称が与えられている。

  • 00面(U+00000〜U+0FFFF) ‐ 基本多言語面(BMP: Basic Multilingual Plane)
  • 01面(U+10000〜U+1FFFF) ‐ 補助多言語面(SMP: Supplementary Multilingual Plane)
  • 02面(U+20000〜U+2FFFF) ‐ 補助漢字面(SIP: Supplementary Ideograph Plane)
  • 14面(U+E0000〜U+EFFFF) ‐ 補助特殊用途面(SSP: Supplementary Special-purpose Plane)

Unicodeでは、16進数で書かれる文字番号は、頭に「U+」をつけるルールとなっている。

元々16ビットで設計されていたため、漢字についてはCJK統合漢字として全体に占める割り合いを減らす努力がされたが、記号類はそれと逆に、細分化されている点が特徴といえる。

例えば、ASCIIではマイナス記号もハイフンも、-という記号一つで共用する。しかしUnicodeでは、マイナスはU+2212「−」、ハイフンはU+2010「‐」として別の番号が与えられている。その他の記号についても同様で、記号類が豊富な点は特筆に値する点である。

横棒関係

Unicodeの記号類の豊富さを語る上で、例として横棒関係が挙げられることが多い。

Unicodeでは、横棒関係だけでも、軽く次のようなものがある。罫線用の横線は除く。また欧文、日本語以外の言語の特殊な横棒記号も抜けているものがあるかもしれない。

番号名称概要
U+002DHYPHEN-MINUSASCIIのマイナス記号
U+00ADSOFT HYPHEN単語中、折り返す時に表示されるハイフン(折り返さない時は非表示)
U+2010HYPHEN一般的なハイフン
U+2011NON-BREAKING HYPHEN右端でも折り返さないハイフン
U+2012FIGURE DASH数字用のダッシュ
U+2013EN DASHn幅のダッシュ
U+2014EM DASHm幅のダッシュ
U+2015HORIZONTAL BAR横棒
U+2043HYPHEN BULLET中黒のようなハイフン
U+207BSUPERSCRIPT MINUS上付きマイナス
U+208BSUBSCRIPT MINUS下付きマイナス
U+2212MINUS SIGNマイナス
U+301CWAVE DASH波ダッシュ (〜)
U+3030WAVY DASH波線
U+30FCKATAKANA-HIRAGANA PROLONGED SOUND MARK仮名の長音
U+FF0DFULLWIDTH HYPHEN-MINUS「全角」のASCIIマイナス記号
U+FF5EFULLWIDTH TILDE全角チルダ
U+FF70HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK半角の仮名の長音

ちなみに、JIS X 0208の~は、本来はU+301Cに割り当てられるのが正しいと考えられるが、Windows等ではU+FF5Eに割り当てている。

しかし、本来U+FF5Eは「チルダ」であって、波線記号ではない。日本語以外の言語では、U+FF5Eを表示させても一般的な波線にはならない。

従って、「キャ~~!!」といった~の使い方は、これだと間違いになるだろう。

空白関係

空白も非常に多い。これだけ用意して、どう使い分けるのかは甚だ疑問である。

番号名称概要
U+0020SPACEASCIIの空白記号
U+00A0NO-BREAK SPACE改行しない空白
U+2000EN QUADn幅の四角形
U+2001EM QUADm幅の四角形
U+2002EN SPACEn幅の空白
U+2003EM SPACEm幅の空白
U+2004THREE-PER-EM SPACE1/3m幅の空白
U+2005FOUR-PER-EM SPACE1/4m幅の空白
U+2006SIX-PER-EM SPACE1/6m幅の空白
U+2007FIGURE SPACE数字用空白
U+2008PUNCTUATION SPACE句読点用空白
U+2009THIN SPACE細い空白
U+200AHAIR SPACE非常に細い空白
U+200BZERO WIDTH SPACE幅の無い空白
U+202FNARROW NO-BREAK SPACE幅の狭い改行しない空白
U+205FMEDIUM MATHEMATICAL SPACE中程度の幅の数学用空白
U+3000IDEOGRAPHIC SPACE全角空白
U+FEFFZERO WIDTH NO-BREAK SPACE幅の無い改行しない空白

この他、空白ではないが、U+200C(ZERO WIDTH NON-JOINER)、U+200D(ZERO WIDTH JOINER)といった、特定の言語向けの空白類似記号がある。