CJK統合漢字 — 中国語・日本語・韓国語の文字
UnicodeのCJK統合漢字について解説します。コードポイント範囲、3バイトUTF-8エンコーディング、中国語・日本語・韓国語で同じ文字セットを共有する仕組みを学びます。
CJK Characters
詳細な説明
CJK統合漢字
CJK統合漢字ブロック(U+4E00〜U+9FFF)はUnicodeで最大のブロックの一つで、中国語、日本語(漢字)、韓国語(漢字)の書記体系で共有される20,000以上の文字を含みます。追加の拡張(Ext. A〜I)により総計は90,000漢字を超えます。
主要なCJKブロック
| ブロック | 範囲 | 数 | プレーン |
|---|---|---|---|
| CJK統合漢字 | U+4E00–U+9FFF | 約20,992 | BMP |
| CJK拡張A | U+3400–U+4DBF | 約6,592 | BMP |
| CJK拡張B | U+20000–U+2A6DF | 約42,720 | SIP(第2面) |
| CJK拡張C〜I | 各種 | 約50,000+ | SIP/TIP |
UTF-8エンコーディング
メインCJKブロック(BMP)の文字はUTF-8で3バイトを使用します。例:
- 世 (世) = U+4E16 → UTF-8:
E4 B8 96 - 字 (字) = U+5B57 → UTF-8:
E5 AD 97 - 韓 (韓) = U+97D3 → UTF-8:
E9 9F 93
拡張Bおよび以降の文字は補助面に位置し、UTF-8で4バイト、UTF-16でサロゲートペアが必要です。
漢字統合
Unicodeの漢字統合原則は、地域によって視覚的な形が微妙に異なる場合でも、中国語、日本語、韓国語で同じとみなされる文字に単一のコードポイントを割り当てます。例えば「骨」の文字は中国語フォントと日本語フォントで微妙に異なる場合がありますが、両方ともU+9AA8を使用します。
実用上の影響
CJKテキストを扱う場合、各文字はUTF-8でASCIIの1バイトに対して3バイトを占めることを覚えておいてください。100文字の日本語の文はUTF-8で約300バイトを使用します。データベースカラムのサイズ設定、APIペイロード制限、テキスト切り詰めロジックはこの違いを考慮する必要があります。
ユースケース
多言語データベースのストレージ要件の計算、CJKテキストの文字エンコーディング問題のデバッグ、中国語・日本語・韓国語コンテンツで文字列長とバイト長が大きく異なる理由の理解に使用します。