Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2023年07月16日] [更新 2023年07月29日] Delphi 一般・その他 [未分類 - OS の操作等]
   
文字符号化方式・文字コード・コードページ・コードポイント
動作確認等 Windows 10 ビルド 19043 Pro 64 bit
[整理番号 - 1930]







文字符号化方式・文字コード・コードページ・コードポイント


本ページは,表題の用語についての簡単な説明記事です.





01_コンピュータにおける文字の符号化


コンピュータでは,文字そのものを記憶したり保存すことはできません.文字に数値 (番号) を割り当てて,その値を記憶したり保存します.文字を画面に表示したり印刷する時は,文字に割れ当てた値に相当する文字の描画データを,フォントファイルから読み出して,図形としての文字を描画します.
文字に数値を割り当てて,各々の文字を区別することを符号化と言います.

文字の符号化は,コンピュータメーカがそれぞれ独自に符号化の方式を作成していました.その結果,いくつもの文字符号化方式が存在することになりました.

日本では,1978年に JIS が文字符号化集合としての規格を制定しています.現在の JIS X 0208 がその規格です.日本語の文字符号化方式は,この規格の文字を基本として符号化しています.





02_文字符号化方式と文字集合 ( 文字セット )


日本語の文字符号化方式は,以下の JIS X 0208 の文字が基本となっています.それ以外に,各符号化方式が独自に文字を追加しています.
各々の文字符号化方式で使用可能な文字全体を,符号化文字集合,あるいは,符号化文字セットと言います.単に文字集合,文字セットと言うこともあります.



Windows では,マイクロソフトが策定した文字符号化方式を,ANSI (米国国家規格協会) が制定した方式が使用されてきました.ANSI の規格では,国と地域によって文字符号化方式が異なります.
日本語版の Windows では,ANSI が制定した Shift_JIS と呼ばれる文字符号化方式が使用されてきました.これは,JIS X 0208 で制定されている文字に,半角カタカナと約 400 文字を追加した内容になっています.
以下は,Windows の Shift_JIS の文字集合です.つまり,Shift_JIS で使用可能な文字の集まり (セット) ということになります.



文字を使用する立場としては,文字符号化方式の具体的な内容を知る必要はないと絵もいますが,以下のリンクに Shift_JIS についての説明記事があります.この記事の表で,Windows-31J が Windows の Shift_JIS です.1993  年にリリースした Windows 3.1 の日本語版で実装されたのでこの名前になっています.



[備考]
Shift_JIS という用語は,IANA (Internet Assigned Numbers Authority - インターネット番号割当機関) が定義して使用してきた用語です.JIS の規格名にも規格文書にも使用されていませんでしたが,2000年発行の,JIS X 0208 規格文書の付属書 Shift_JISX0213 で,Shift_JIS の名称が定義されています.




03_文字コード・コードページ・コードポイント


コンピュータ関連のシステムベンダは,識別子を付けて文字符号化方式を区別しています.この識別子をコードページと言います.文字の符号化によって割り当てられた値,つまり,個々の文字のコードをコードポイントと言います.一般的には,コードページが異なれば,同じ文字でもコードポイントが異なります.
コードポイントは,符号点,符号化点,文字コードと言うこともあります.
以下の最初のリンクは,Windows で使用可能なコードページの一覧です.Shift_JIS のコードページは 932 です.コードページの識別子であることを明確にするには,プリフィックスの CP を付けて CP932 と表記します.



文字コードと言う用語は,コードポイントの意味ですが,文字符号化方式の意味でも使われています.例えば,テキストファイルの場合,



「このテキストファイルの (テキストの) 文字コードは Shift_JIS です」



という言い方をすることがあります.もちろん,実際にディスクに保存されているのは「テキスト (文字)」ではなく,文字コードの値です.
個別の文字コードについては以下のような表現があります.



「文字コードが Shift_JIS の時,文字 東 の文字コードは 16 進数で 938C です」
「文符号化方式が Shift_JIS の時,文字 東 の文字コードは 16 進数で 938C です」
「コードページが 932 の時,文字 東 のコードポイントは 16 進数で 938C です」




文字
コードポイント (文字コード)
Shift_JIS Unicode
938C 6771


エンコード (encode) という用語も,文字の符号化の意味で使用することがあります.文字コードを,別の符号化方式の文字コードに変換する処理もエンコードと言います.
encode は,情報の暗号化,記号化,符号化など,別の形式に変換するという意味です.その逆は decode (デコード) と言います.文字の符号化の場合,デコードの処理はありません.



[備考 1]
上の表の 938C, 6771 (16 進数) が文字「東」の値です.これが文字コードとしてのコンピュータ内部のデータです.この値がメモリに書き込まれたり,ディスクに保存されます.文字に割れ当てる値と文字の対応関係の方式,つまり,文字符号化方式によって文字コードが異なります.

[備考 2]
コンピュータ内部のデータは 16 進数を使用して表示します.16 進数の 1 桁は,10 進数で 0 ~ 15 です.16 進数では,これを 1 桁で表示するために,10 進数の 10 ~ 15 に相当する値として A ~ F を使用します.




04_Unicode ( ユニコード )


言語に依存せず,プログラムにも依存せず,OS などのプラットフォームにも依存しない,全ての文字に固有の番号を割り当てることを目的でユニコードコンソーシアム (The Unicode Consortium) が 1990年12月に設立されました.ユニコードコンソーシアムが策定・改訂した内容は,ISO(国際標準化機構),IEC(国際電気標準会議)が制定しています.ユニコードコンソーシアムが策定した文字符号化方式をユニコードと呼んでいます.

1993年に UCS-2 (Universal multi-octet Character Set 2) 34,233 字が制定されました.UCS-2 には,世界で一般的に使用される文字,記号のほとんどが登録されました.その後, より多くの文字が扱えるように,UCS-2 を改定して,UTF-8, UTF-16, UTF-32 が制定されました.

UTF-8 は 8 ビット (1 バイト) を単位とした可変長バイトの符号化方式です.UTF-16 は,UCS-2 で定義された文字は 16 ビット (2 バイト) で,それ以外は可変長バイトの符号化方式となっています.UTF-32 は 32 ビット (4 バイト) の固定長です.どれも Unicode ですが,単に Unicode と言う時は UTF-16 のことを意味します.UTF-16 であることを明確にする場合は,コードポイントに U+ のプリフィックスを付けます.


Unicode に登録されている文字は,ユニコードコンソーシアムが公開している以下の PDF で閲覧することがでます.Unicode Standard 15.0.0 にば,149,186 文字が登録されています.
この PDF は,2 番目のリンクのディレクトリ 15.0.0/charts/ 内の CodeCharts.pdf です.



例えば文字「東」のコードポイントは 6771 です.これは下図のように登録されています.




図1
U+6771 の登録内容

コードポイントの下の表示は部首情報です.「東」は「木 (きへん)」の文字です.75.4 の 75 は部首番号で,4 は部首内の画数です.
漢字の下の表示は原典情報です.下表のようになっています.この文字が制定されている規格名とその文字コードになっています.TCA は,台北市コンピュータ協会の略称です.TCVN は Viet Nam Standards (Tieu Chuan Viet Nam) の略です.
「東」の簡体字は「东」です.


原典の分類 原典の規格と文字コード (16 進数)
G1 中国 GB12345-90 : 362B.(繁体字) 
HB1 中国 (台湾) Big-5, Level 1 : AA46 (繁体字)
T1 中国 (台湾) TCA-CNS 11643-1992 第1面 : 4E29
J0 日本 JIS X 0208-1990 : 456C.456C は JIS コード
K0 韓国 KSX 1001:2004 : 5454
V1 ベトナム TCVN 6056 : 5945


以下は,文字「東」の個別情報です.kIRG_JSource に原典情報関係の記述があります.表の最後には中国の簡体字のコードポイントが書かれています.ページの最後には,グリフウィキ (GlyphWiki) の文字「東」へのリンクがあります.


[備考 1]
UCS-2 は,2011年の改定で廃止されました.

[備考 2]
Windows は,2000年にリリースされた Windows 2000 で Unicode による処理が可能になりました.2006年にリリースされた Windows Vista で全面的に Unicode 化されました.