基本ラテンアルファベット — UnicodeのA〜Z
基本ラテンアルファベット(A〜Z、a〜z)のUnicodeエンコーディングを探ります。コードポイント、UTF-8の1バイト表現、大文字小文字マッピングの仕組みを解説します。
詳細な説明
Unicodeにおける基本ラテンアルファベット
ラテン大文字A〜ZはコードポイントU+0041〜U+005A、対応する小文字a〜zはU+0061〜U+007Aを占めます。これら52文字は基本ラテンUnicodeブロック(U+0000〜U+007F)の中核を形成し、ASCII標準と完全に一致します。
コードポイントの構造
大文字と小文字の範囲はコードポイント値で正確に32(0x20)離れています:
A = U+0041 (65 decimal) a = U+0061 (97 decimal)
B = U+0042 (66 decimal) b = U+0062 (98 decimal)
...
Z = U+005A (90 decimal) z = U+007A (122 decimal)
この0x20のオフセットは、ビット演算で大文字小文字変換を容易にするASCIからの意図的な設計選択です。ビット5を切り替えるだけで大文字と小文字が切り替わります。
UTF-8エンコーディング
すべての基本ラテン文字はUTF-8で1バイトとしてエンコードされ、ASCII値と同一です。文字Aはバイト0x41、zはバイト0x7Aです。これは基本ラテンテキストがASCII、Latin-1、UTF-8で同じバイト長を持つことを意味します。
基本ラテンを超えて
UnicodeはLatin-1 Supplement(U+0080–U+00FF)のアクセント文字、Latin Extended-A(U+0100–U+017F)、Latin Extended-B(U+0180–U+024F)などのブロックで、ラテン文字をA〜Zをはるかに超えて拡張しています。Unicode Inspectorでは、これらの拡張文字が基本文字とバイト数やエンコーディングでどのように異なるかを比較できます。
全角ラテン文字
日本語のテキスト処理では全角ラテン文字(A〜ZはU+FF21–U+FF3A、a〜zはU+FF41–U+FF5A)を使用します。これらはUTF-8で3バイトを占め、等幅レイアウトでCJK文字の幅に合わせて視覚的に広く設計されています。
ユースケース
文字検証ロジックの構築、大文字小文字を区別しない比較の実装、特定の文字列操作が基本ラテンと拡張ラテン文字で異なる動作をする理由の理解に使用します。