CJK文字の長さ:中国語、日本語、韓国語テキスト
中国語、日本語、韓国語の文字がUTF-8(各3バイト)、UTF-16(各2バイト)、UTF-32エンコーディングでの文字列長にどのように影響するかを学びます。
Multi-byte Characters
詳細な説明
CJK文字:UTF-8で3バイト
中国語、日本語(漢字/ひらがな/カタカナ)、韓国語(ハングル)の文字はUnicode範囲U+4E00–U+9FFF(CJK統合漢字)および関連ブロックを占めます。これらの文字はUTF-8で各3バイトを必要とします。
例の文字列
東京都渋谷区 (Tokyo Shibuya-ku)
長さの測定結果
| メトリック | 値 |
|---|---|
JavaScript .length |
5 |
| コードポイント数 | 5 |
| 書記素クラスター数 | 5 |
| UTF-8バイト数 | 15 |
| UTF-16バイト数 | 10 |
| UTF-32バイト数 | 20 |
CJKにおけるUTF-8 vs UTF-16
これはUTF-16がUTF-8よりコンパクトになる珍しいケースの1つです。各CJK文字はUTF-8で3バイトですが、UTF-16では2バイトです。主にCJKのテキストの場合、UTF-16はUTF-8と比較して約33%のストレージを節約します。
ただし、Webコンテンツでは依然としてUTF-8が好まれます:
- 混合コンテンツ(CJK + ASCII)が一般的で、ASCII文字はUTF-8で1バイト vs UTF-16で2バイト
- UTF-8はHTML、JSON、HTTPの標準エンコーディング
- UTF-8にはバイトオーダーの問題がない(BOM不要)
日本語の混合テキスト
日本語テキストは通常、漢字、ひらがな、カタカナ、ASCIIを混合します:
こんにちは世界!Hello!
ひらがな(こんにちは)と漢字(世界)はUTF-8で各3バイト、全角感嘆符(!)は3バイト、"Hello!"は6バイトです。UTF-8の合計サイズは文字数が示す以上に大きくなります。
データベースの考慮事項
MySQLのutf8エンコーディング(非推奨)は文字あたり最大3バイトのみをサポートし、基本的なCJKをカバーします。ただし、絵文字や補助CJK文字にはutf8mb4(4バイト)が必要です。モダンなアプリケーションでは常にutf8mb4を使用してください。
ユースケース
アジア市場向けアプリケーションの構築や多言語コンテンツの処理において、CJK文字が各3 UTF-8バイトを使用することを知ることは、正確なストレージ計画、APIペイロードサイズの推定、データベースカラムのサイジングに不可欠です。