Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2023年07月16日] [更新 2024年08月09日] 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 で使用可能なコードページの一覧です.つまり,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 として 34,233 字が制定されました.UCS-2 には,世界で一般的に使用される文字,記号類が登録されました.その後, より多くの文字が扱えるように,UCS-2 を改定して,UTF-8, UTF-16, UTF-32 が制定されました.

どれも Unicode ですが,単に Unicode と言う時は UTF-16 のことを意味します.UTF-16 であることを明確にする場合は,コードポイントに U+ のプリフィックスを付けます.



文字符号化方式 コードページ 使用バイト数
UTF-8 65001 1 バイト (8 ビット) 単位の可変長バイト
UTF-16 1200 UCS-2 で定義された文字は 2 バイト (16 ビット)
それ以外は 4 バイト以上の可変長バイト
UTF-32 12000 4 バイト (32 ビット) の固定長バイト


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 の UCS は,Universal multi-octet Character Set (国際符号化文字集合) の略です.UCS-2 は,2011年の改定で廃止されました.

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

[備考 3]
2 バイトは 16 進数で FFFF です.つまり 16 ビットです.16 ビットで扱える数値は 0 - 65,535 です.2 バイトだけでは,これ以上の文字は扱えないことになります.
Windows ては (少なくても Windows 10 までは),フォントファイル内の文字のインデックスに 2 バイトを使用しています.そのため,Windows  のフォントファイルには,65,535 を超える文字は収録できません.




05_Unicode Standard 以外の文字


漢字の異体字セレクタを使用する異体字は,Unicode Standard とは別に登録されています.以下は,異体字セレクタを使用する異体字関係の記事や資料へのリンクです.
2023年現在,日本の漢字としては,異体字セレクタを使用する異体字には,以下の 3, 4, 5 番目の 3 つのコレクションがあります.この 3, 4, 5 番目の PDF は,2 番目のリンクのディレクトリ [2022-09-13/] 内にある PDF です.

IVS は,異体字セレクタを使用する仕組みである Ideographic Variation Sequence (表意文字異体字シーケンス) の略称ですが,通常は,異体字セレク VS (Variation Selector) の具体的な値の意味で使われています.
したがって,異体字セレクタを使用する文字は UCS + IVS (基底文字 + 異体字セレクタの値) という構造になります.



No. リンク 内容
1 Ideographic Variation Database 表意文字異体字データベース (IVD) についての説明
2 Index of _ivd_data 異体字のージョンインデックス
3 Adobe-Japan1 collection (PDF) Adobe が策定した異体字
4 Hanyo-Denshi collection (PDF) 汎用電子情報交換環境整備プログラムが策定した異体字
5 Moji_Joho collection (PDF) 文字情報技術促進協議会が策定した異体字


Adobe-Japan1 collection の異体字は,Adobe-Japan1 に登録されている文字の一部です.Adobe-Japan1 は,Adobe が独自に符号化した文字セットです.Adobe-Japan1 は,DTP (Desktop publishing) におけるデファクトスタンダードとにっています.

Adobe-Japan1 collection のグリフは,Windows 10 に標準でインストールされる游明朝フォント / 游ゴシックフォントに収録されいます.下図は,游明朝フォントを使用した Adobe-Japan1 collection の異体字の例です.




図2
Adobe-Japan1 collection の異体字の例

  • フォントは游明朝
  • 基底文字は U+9089
  • 異体字セレクタ (IVS) の値は
    E0100 - E010E

Hanyo-Denshi collection のグリフは,花園明朝フォントに収録されています. このフォントは,以下のリンクのページで,HanaMinA.otf, HanaMinB.otf, HanaMinC.otf の 3 つををクリックしてダウンロードできます.
花園明朝フォントには,Adobe-Japan1 collection の異体字も収録されています.
下図は,花園明朝A を使用した異体字の表示例です.




図3
Hanyo-Denshi collection の異体字の例

  • フォントは花園明朝A
  • 基底文字は U+9089
  • 異体字セレクタ (IVS) の値は
    E010F - E011E

Moji_Joho collection のグリフは,文字情報技術促進協議会が提供している IPAmj明朝フォントに収録されています.このフォントは,以下の最初のリンクからダウンロードできます.また,IPAmj明朝フォントに収録されている漢字の情報がエクセルのブックで提供されています.以下の 2 番路のリンクからダウンロードできます.




図4
Moji_Joho collection の異体字の例

  • フォントはIPAmj明朝
  • 基底文字は U+9089
  • 異体字セレクタ (IVS) の値は
    E010F - E011D, E011F

Emoji も,Unicode Emoji として登録されています.Emoji のフォントは,OS のベンダやサードパーティが提供していて,それぞれデザインに違いがあります.Unicode Emoji には PDF の資料はありません.全てテキストベースの資料となっています.以下の最初の記事にユニコードコンソーシアムが公開している資料へのリンクがあります.


[備考]
ユニコードコンソーシアムが公開している PDF にはフォントが埋め込まれています.したがって,閲覧する環境の違いによる文字化けはありません.
ただし,異体字関係の PDF の文字はコピーできません.文書内の文字の検索もできません.各々の文字には Unicode の基底文字のコードポイントが併記されています.このコードポイントで文字を検索できます.