CJK統合漢字
CJK統合漢字（シージェーケーとうごうかんじ、）は、ISO/IEC 10646（略称：UCS）およびにて採用されている符号化用漢字集合およびその符号表である。CJK統合漢字の名称は、中国語、日本語、朝鮮語で使われている漢字をひとまとめにしたことからきている。CJK統合漢字の初版であるUnified Repertoire and Ordering第二版は1992年に制定されたが、1994年にベトナムで使われていた漢字も含めることにしたため、CJKVと呼ばれる事もある。CJKVは、中国語・日本語・朝鮮語・ベトナム語を表す英語の頭文字である。特に、その4つの言語で共通して使われる、または使われていた文字体系である漢字（チュノムを含む）のこと。ソフトウェアの国際化、中でも文字コードに関する分野で用いられる。
CJK統合漢字は、日本・中国・台湾・北朝鮮・韓国・ベトナムの各漢字コードとの対応表も定めているが、事情によりCJK統合漢字との対応を持たない各国・各地域の漢字コードをUCSに適切に変換できるよう、互換用の領域が別途定められている。この領域の漢字はCJK互換漢字と呼ばれる。
1978年、日本によって世界で最初のISO 2022に基づく漢字コード規格JIS C 6226が制定された。1980年代には中国・台湾・韓国にて次々と各国・地域用の漢字コード規格が制定されていったが、これらは互いに関連性がなく、混在させて使用するにはISO 2022のエスケープ・シーケンスで漢字コード表を切り替えるしかなかった。
1980年、国会図書館の高橋徳太郎が主に書誌学の観点から、東アジアの統一漢字コードの必要性を指摘した。同年、台湾で制定された3バイト漢字コード規格CCCIIは、おそらく日本・中国・台湾の漢字を統一的に扱うことを目的とした最初の規格の一つである。この規格は東アジアの文献情報用にアメリカでもANSI Z 39.64として採用された。
1984年、ISOの文字コード規格委員会 (ISO/TC 97 - SC2) は文字セットの切り替えを行わずに世界中の文字を単一の文字集合として扱える文字コード規格 (ISO 10646) を作成することを決定し、専門のワークグループ (WG2) を設置した。当初、この文字コード規格は16ビットを想定し、その中に日本や中国など各国の漢字コード表をそのまま入れることを想定していた。、1989年、各国の漢字コードを統合した漢字集合HCCのアイデアを提案した。
1990年、完成したISO 10646の初版ドラフト (DIS 10646) では、漢字コードは32ビットで表現され、各国の漢字コードはそのまま入れることになった。しかし中国は漢字を各国でばらばらに符号化するのではなく、あくまで統一して扱うことを求めてこのドラフトには当初から反対しており、今後の漢字コードの方針を決めるため、ワークグループはCJK-JRGと呼ばれるグループを別途設置し、そこで引き続き検討することにした。
一方、1987年頃から、ゼロックスのジョー・ベッカーとリー・コリンズは世界中の文字を統一して扱える文字コードUnicodeを開発していた。1989年に発表されたUnicodeの概要では、その基本ポリシーとして、16ビットで全ての文字を扱えることを目指しており、そのために日本・中国・韓国の漢字を統一することとしていた。1990年にはこの方針に基づいた最終ドラフトが完成、それに賛同する企業によって、翌1991年1月にはUnicodeコンソーシアムが設立された。このドラフトでは、日本・中国・韓国の漢字の類似する漢字を統合することで2万弱の漢字コードを入れ、さらに将来の拡張用に、3万程度の漢字の空き領域が別に用意されていた。
1991年、ISO/IEC 10646の初版ドラフトはUnicodeとの一本化を求める各国により否決され、また中国およびUnicodeコンソーシアムの要請により、CJK-JRGにおいて、ISO 10646とUnicodeの一本化が図られることになった。CJK-JRGは各国の漢字コードに基づき独自の統合規準を定め、ISO 10646とUnicode用の統合漢字コード表を作成した。1991年末、この文字表はUnified Repertoire and Ordering (URO) として完成した。
1992年、UROを取り込んだISO 10646の二版ドラフトが完成し、賛成多数で国際規格化された。ただしUROには若干の間違いが発見されており、それらの修正が行われている。
1993年5月、U+4E00-U+9FFFのブロックに最初のCJK統合漢字、20,902字が割り当てられたISO/IEC 10646が正式に制定され、その一ヶ月後には同じ内容を持つUnicode 1.1が制定された。
1999年、Unicode 3.0で、ISO/IEC 10646の修正案17において、拡張漢字A集合として、U+3400-U+4DFFのブロックに6,582字が追加された。当初は6,584文字の予定であったが、そのうち2文字が互換漢字領域にあったため、互換領域の2文字を拡張漢字A集合として扱うことにして、この2文字は追加集合からは削除された。また、同時期に発行された修正案13において、URO漢字のうち中国に原規格がない文字に対して、GB 16500に基づく新規に原規格の割り当てが行われ、またベトナムの文字欄が追加されCTJKVの5欄併記となった。
2001年、Unicode 3.1で、ISO/IEC 10646-2として、拡張漢字B集合42,711字が、U+20000-U+2A6FFのブロックに追加された。しかしながら、非常に膨大な漢字集合を極めて短期間のうちに定めたため、漢字の重複や字形の誤りが多数発生した。
2005年、Unicode 4.1で、ISO/IEC 10646:2003修正案1として、基本多言語面 (BMP) のU+9FA6-U+9FBBに22文字の漢字が追加されて20,924文字になった。
2008年、Unicode 5.1で、基本多言語面のU+9FBC-U+9FC3に8文字が追加されて20,932文字になった、
2009年、Unicode 5.2で、拡張Cの4,149文字がU+2A700-U+2B734に、また基本多言語面でもU+9FC4-U+9FCBに8文字が追加されて20,940文字になった。
2010年、Unicode 6.0で、拡張Dの222文字がU+2B740-U+2B81Fに追加された。
2012年、Unicode 6.1で、基本多言語面のU+9FCCに1文字が追加されて20,941文字になった。
2015年、Unicode 8.0で、拡張Eの5,762文字がU+2B820-U+2CEAFに追加された。また基本多言語面でもU+9FCD-U+9FD5に9文字が追加されて20,950文字になった。
2017年、Unicode 10.0で、拡張Fの7,473文字がU+2CEB0-U+2EBE0に追加された。また基本多言語面でもU+9FD6-U+9FEAに21文字が追加されて20,971文字になった。
2018年、Unicode 11.0で、基本多言語面のU+9FEB-U+9FEFに5文字が追加されて20,976文字になった。
Unicode 11.0 段階での文字数は以下のとおりである（互換漢字のうち、統合漢字扱いされる12字を加えると87,887文字になる）。
原則として登録される毎に部首画数順で配列されている。但し一部に乱れが存在している上追加が相次いだために検索が困難になってきており、Unihanデータベースでは割り当てられたUnicode値と部首番号、部首別画数から導出される値をソートキーとして規格化している。
漢字には「形・音・義」の3つの側面があるといわれる。CJK統合漢字は日本・中国・台湾・韓国の漢字コード表の漢字のうち由来が同一であり、かつ字形が同一または類似するものを、一定の基準のもとに統合することにした。統合規準については、ISO/IEC 10646の補遺Sに詳述されている。由来が同一であっても国・地域によって漢字の意味や発音が大きく変化しているため、現代の各国間でも音・義が同一であるとは限らない。このため統合漢字では日本の「机」（つくえ）と中国の「」（機の簡化字）が統一されたり、現代の日本語と中国語で大きく意味が異なる「届」等の漢字に同一の符号が割り当てられている。（英語版参照）
統合漢字は、字形が同一でなくても、「同じ抽象字形を持つ漢字」も統合することにしている。同一とされる抽象字形には、「為」と「爲」や、「単」と「」などがある。その結果、「僧」と「」、「廐」と「」、「」と「」なども同一符号化され、符号のみでは字形や画数を明確に定めることが困難である。
日本・中国・台湾・韓国の国内規格とUCSとの間でラウンドトリップ変換を実現するため、統合漢字の最初のURO 20,902文字に限り、日本・中国・台湾・韓国の国内規格で区別されている漢字は統合漢字でも必ず分離することとした。たとえばJISの間違いにより別符号化されていた「飲」と「飮」は統合漢字でもやはり分離され（他のすべての「飠」と「𩙿」の違いしかない漢字は統合されている）、また「」と「」は、「」や「」等の漢字では統合される一方、「」と「」や、「」と「」などは台湾のCNS規格では区別しているとの理由により別符号化されている。
CJK統合漢字は上記のような「統合原則」および「原規格分離規則」を定めたにも関わらず、これらに適合しない統合・分離の例を幾つか抱えている。
一例を挙げると、「戋」と「㦮」は統合原則では統合されることになっている。具体的にはたとえば、「」と「」や、「」と「」、「」と「」は統合漢字では同一符号である。しかしなぜか「桟」と「栈」は、日本・中国・韓国・台湾のいずれの国内規格でも区別しているものはないのに、統合漢字ではU+685FとU+6808に分離されている。
UROの制定作業の直前に、台湾がCNS 11643:1992規格として、康煕字典や大漢和辞典の漢字を含む4万7千文字の漢字コードを制定した。この漢字集合は、多数の異体字を規定しているが、その異体字の中には統合漢字では統合されているものも多く含まれていた。そのため、CNS規格はUnicodeとの間でラウンドトリップ変換が不可能となった。
一例として、CNS 11643:1992では従来の「」（1面4E7E）に加えて、「」（6面2D45）を新たに規定した。しかし統合漢字では両方の字形は76F4として符号化された（「」は日本字形、「」は中国・台湾字形）。その結果、原規格分離まで行って維持しようとしたラウンドトリップ変換が、CNS 11643:1992との間では不可能となった（この問題は2001年のISO/IEC 10646-2:2001の制定によりようやく解消された）。
1991年7月にCJK-JRGは、CJK統合漢字の対象となる漢字は1991年の時点における各国・各地域で公式に制定された規格のみに限定することで合意した。これにより、日本からはJIS X 0208:1990、JIS X 0212:1990、韓国からはKS C 5601、KS C 5657、台湾からはCNS 11643:1987、そして中国からはGB 2312、GB 7589、GB 7590、GB/T 12345、GB 8565で規定されている漢字が統合の対象となった（実際にはGB 7589、GB 7590そのものではなく、それらに記載されている字体の繁体字が統合の対象として提出された）。しかし中国は、この合意では入れることのできない、現代漢語通用字表やCCITT Chinese Primary Setの漢字、標準電碼本の漢字をCJK統合漢字に含めようとし、上記の規格に含まれない多数の漢字を既存の規格の空き符号位置に混入させて、統合対象の漢字として提出した。その結果、一見由来の不明な多数の幽霊漢字が、CJK統合漢字に紛れ込むこととなった。
CJK統合漢字の中には、全く同じ文字が複数の符号位置に重複して登録されているものや、本来統合されるはずの文字が別字として登録されているものなどが発見されている。とりわけ、拡張Bの追加の際には、かつてBMPで統合されたはずの「点なしの『器』」（U+5668で点の有無を包摂）に新たな符号位置 (U+20F96) を与えるといった、不整合な例が多数見られる。
CJK統合漢字の中には、字形が似ているだけで統合された物が1例確認されている。拡張Aに含まれるU+4039（䀹）がそれである。この訂正のためにCJK統合漢字U+9FC3にU+FAD4を割り当て直した (Unicode 5.1)。大漢和辞典における23381番 (U+4039) と23380番 (U+FAD4 = U+9FC3) である。
CJK統合漢字拡張B以降の拡張漢字集合は、追加漢字面に存在するため、UTF-16を採用したシステムでは、Unicode 2.0で追加されたサロゲートペア（代用対）という2つの代用符号位置を組み合わせて1文字として認識させる手法を取らないと符号化できない。そのため、アプリケーションによってはいまだに対応ができていないケースがある。JIS X 0213の漢字のうち一部はこの拡張Bに含むため、文字列をUTF-16で処理するシステムに於いてJIS X 0213の全ての文字に対応する場合はサロゲートペアを正しく処理できる必要がある。
中国は『康熙字典』や、古壮字をはじめとする少数民族で使われている特殊漢字などの文字をすべてUCSに収録させようとしており、また日本や韓国、ベトナムでも漢字（国字、韓国国字、チュノムなど）の追加提案があるため、Unicodeの今後のバージョンでは、拡張Gとしての追加漢字や、甲骨文などの古代の文字を、U+30000以降（第三漢字面）へ追加することが検討されている。
U+F900～U+FAFFのブロックである。Unicode 3.1では補助集合として第2面（追加漢字面）にU+2F800～U+2FA1Fのブロックが追加された。基本的にCJK互換漢字と重複する漢字が割り当てられている。
CJK統合漢字には、基本的に1つの漢字に付き1つの符号位置しか与えられないため、KS X 1001など各国の規格で全く同じ形の漢字が重複して収録されていた場合、Unicodeとの相互変換を行った際可逆性が失われる事となる。（KS X 1001の場合、読みにより分離している為、読みがわからなくなって困ることがある）。この問題を解決する為に、このブロックが作られた。Big5で誤って重複してしまった2字もこのブロックにある。IBM拡張漢字のうちCJK統合漢字に入れなかったものもあり、その中にはU+FA1F（﨟）やU+FA24（﨤）などCJK統合漢字に同じ漢字が存在しない為、CJK統合漢字と同じ扱いをするものが12字ある。
Unicode 3.2では、JIS X 0213で包摂基準が変更され分離されたもののうち、「侮󠄁󠄁」や「僧󠄁󠄁」、「社󠄁」などUnicodeでは包摂されるものがこのブロックに追加された。これは、CJK統合漢字は日本以外にも中国と韓国の漢字を含めたものであり、日本だけの為に包摂基準を変更して包摂分離して追加すると、他の国が国内規格と対応するUnicodeのコード値を変更しなければならないことがあるからである。例えば、「社󠄁」など⽰偏の漢字はGB 18030では偏が「⺭」の形を採用しているが、KS X 1001では偏が「⺭」でなく「⺬」の形を採用している。もし「社󠄁」を包摂分離してCJK統合漢字の新たな符号位置に追加したとすると、GB 18030はそのままでよいが、KS X 1001の「社󠄀」のコードとの対応は新たに追加された方に変更しなければならなくなる。