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が好まれます:

  1. 混合コンテンツ(CJK + ASCII)が一般的で、ASCII文字はUTF-8で1バイト vs UTF-16で2バイト
  2. UTF-8はHTML、JSON、HTTPの標準エンコーディング
  3. 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ペイロードサイズの推定、データベースカラムのサイジングに不可欠です。

試してみる — String Length Calculator

フルツールを開く