Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2023年04月29日] [更新 2023年11月03日]* Delphi 一般・その他 [未分類 - OS の操作等]
区点コードによる文字入力と関連 JIS 規格
動作確認等 Windows 10 ビルド 19043 Pro 64 bit
[整理番号 - 1840]







区点コードによる文字入力と関連 JIS 規格


JIS の区点コードを使用して、ワープロなどに文字を入力する方法です。区点コードそのものではありませんが、Microsoft IME の IME パッドを使用すれば、特定の区点コードの文字を入力することができます。
本ページでは、まず JIS の区点コードの仕様について確認します。

区点コードで文字を入力しても、文字のデータが区点コードになるわけではありません。
2006年にリリースされた Windows Vista で、Windows は Unicode (ユニコード) 化されました。Unicode は、文字に固 有の値を割り当てる方式の世界共通の体系です。現在は、多くの処理系で Unicode (UTF-8 または UTF-16) が使用されています。
ワードやエクセルも、新しいバージョンは Unicode 対応となっています。文字を Unicode で処理するアプリでは、文字のデータは Unicode のコードポイントの値になります。






01_文字集合 / 漢字集合関係の JIS 規格


文字の句点コードは JIS (日本産業規格) で制定されています。JIS の規格番号の先頭が JIS X 02 が区点コードに関係している規格です。
これらの規格票 (規格書) は、ユーザ登録すれば、日本産業標準調査会のウェブサイトで閲覧できます。国立国会図書館でも閲覧できます。



下表は、区点コード (規格票では区点位置) を制定している規格です。
文字数は、JIS の規格票に記載されている値で、本記事掲載時点での値です。JIS X 0221 の文字数は、2022年9月13日リリースの Unicode 15.0.0 に登録されている字形数です。
ISO (国際標準化機構) は、International Organization for Standardization の略です。IEC (国際電気標準会議) は、International Electrotechnical Commission の略です。

規格に改正があると、規格票では、例えば X 0213 : 2004 のように、規格番号の末尾に西暦年が付加された内部番号が使われます。改正内容、あるいは改正後の内容であることを示す時は、先頭に JIS を追加して JIS X 0213:2004 の表記を使用します。



規格番号 文字数 内容
JIS X 0201

規格名は、
「7 ビット及び 8 ビットの情報交換用 符号化文字集合」
制定文字は以下
○ ラテン文字用図形文字集合 (半角英数字と半角の記号類)
○ 片仮名用図形文字集合 (半角の片仮名を含む)
○ IS X 0211 の制御機能
対応国際規格は ISO/IEC 646

ASCII の「\」(バックスラッシュ) は、この規格では「¥」(円記号)
ASCII の「〜」(チルダ) は、この規格では「̅」()オーパライン)
濁点と半濁点付きの片仮名はない (単独の濁点、半濁点はある)

この規格の半角英数字、半角仮名文字の通称名は ANK (アンク)
ANK は Alphabet Numeric Kana の略

JIS X 0211 規格名は、
「符号化文字集合用制御機能」
対応国際規格は ISO/IEC 6429
この規格は、ISO/IEC 6429 の翻訳版の規格
JIS X 0208 6,879 

規格名は、
「7 ビット及び 8 ビットの 2 バイト情報交換用符号化漢字集合」
漢字は、以下の 2 つに分かれていいる
○ 第 1 水準漢字
○ 第 2 水準漢字 (地名・人名を含む個別分野用漢字など)
制御機能、半角片仮名、丸囲み文字、ローマ数字などはない

この規格の文字は、JIS 漢字、JIS 基本漢字などとも呼ばれている
第 1 水準は読み順、第 2 水準は部首順になっている

JIS X 0212 6,067  規格名は、
「情報交換用漢字符号−補助漢字」
JIS X 0208 の補助用
JIS X 0208 にはないが、情報交換に必要と思われる文字
JIS X 0213 11,233  規格名は、
「7 ビット及び 8 ビットの 2 バイト 情報交換用符号化拡張漢字集合」
漢字は、次の 2 つの実装水準に分けられている
○ 実装水準 3 (漢字集合 1 面。通称 第 3 水準漢字)
○ 実装水準 4 (漢字集合 2 面。通称 第 4 水準漢字)
実装水準 3 には、JIS X 0208 の文字が全て含まれている
JIS X 0212 補助漢字の一部の文字が含まれている
ISO-2022-JP

JIS の規格ではなく、ISO の規格。規格名は、
「International Organization for Standardization-2022-Japan」
インターネットメール (電子メール) で使用する日本語の文字の規格
以下の文字が制定されている
○ JIS X 0211 の集合 (制御文字)
○ JIS X 0201 のラテン文字用図形文字集合
○ ISO / IEC 646 の国際基準版図形文字
○ JIS X 0208 の文字
ISO/IEC 646 は、ASCII を国際化した文字集合
ISO-2022-XX では、記号領域は各国対応

この規格で制定されているのは 7 ビットの文字
これらの文字のコードは JIS コードと呼ばれている

JIS X 0221

規格名は、
「国際符号化文字集合(UCS)」
ISO/IEC 10646 の日本規格。ISO/IEC 10646 は、
ユニコードコンソーシアムが策定し、ISO / IEC が制定している規格
UCS は Unicode の文字集合のこと

規格票を購入すると、CD-ROM が添付されてくる



UCS (国際符号化文字集合) では現時点で 149,186字が制定されていますが、これらの全ての文字が Windows の日本語用フォントに収録されているわけではりません。メイリオに収録されている文字数は 25,059 です。MS P明朝に収録されている文字数は 19,399 です。Windows 10 のシステムのデフォルトフォントの游ゴシックiには、24,401 字が収録されています。
Adobe が Google と共同開発した源ノ角ゴシックには 6 万を超える文字が収録されています。文字情報基盤の IPAmj 明朝フォントには、61,360 字が収録されています。



常用漢字表に関する規格は JIS にはありません。常用漢字は、文化審議会国語分科会 (旧 国語審議会) が文化庁 (旧 文部省) に答申し、内閣が告示するものです。
常用漢字は、2010年の改正で 1,945文字から 2,136文字になっています。





02_区点コードと文字


JIS では、10 進数 4 桁の「区点コード」と呼ばれる値で文字を識別します。上位 2 桁が「区」で、下位 2 桁が「点」です。値の範囲は 1 ~ 94 です。JIS X 0123 では「面」という概念が追加されています。
下の表は、JIS X 0208 で制定されている第 1 水準漢字の 16 区の漢字です。この表の最後の文字「蔭」の区点コードは 1694 です。JIS の規格票での表記は 16-94 です。



0 1 2 3 4 5 6 7 8 9

16
00
10
20
30
40
50
60
70
80
90


JIS X 0212 の補助漢字の 16 区の漢字です。上の第 1 水準の表と同じ 16 区の漢字です。区点コードが全く同じ文字ですが、字形が全く違う文字です。



0 1 2 3 4 5 6 7 8 9

16
00
10
20 乿
30
40 仿
50
60
70
80
90


区点コードは 文字集合 / 漢字集合単位となります。その結果、次の表のように、区点コードが同じでも、文字集合 / 漢字集合によっては異なる文字となることがあります。
JIS X 0213 (1 面) (第 3 水準漢字) には、JIS X 0208 (第 1 水準漢字・第 2 水準漢字) の全ての文字が含まれています。それらの文字の区点コードは、JIS X 0208 でも JIS X 0213 (1 面) でも同じです。



文字集合 / 漢字集合 区点 文字
JIS X 0208 16-32
JIS X 0212
JIS X 0213 (1 面) 15-32
JIS X 0213 (2 面) 𣙇


同じ文字ですが、文字集合 / 漢字集合によって区点コードが異なる例です。



文字集合 / 漢字集合 区点 文字
JIS X 0212 16-32
JIS X 0213 (2 面) 01-17




03_区点コードの文字を入力


以下のリンクの記事に、Unicode のコードポイントで文字を入力する手順があります。同じ方法で、区点コードの値を変換する操作で文字を入力することができます。ただし、JIS X 0212 の補助漢字は、この方法では入力できません。


下図は、JIS X 0208 (第 1 水準漢字または第 2 水準漢字) の文字の場合です。区点コード 84-06 の文字「熙」を入力する例です。
区点コードは 10 進数の 4 桁の値ですから、テンキーから入力すれば、入力モードを [全角英数字] にする必要はありません。かな漢字入力の状態 (日本語 IME が ON の状態) であればそのまま区点コードを入力して変換できます。
区点コードを入力したら [F5] キーで変換を開始します。




図1
区点コードを入力
  • [F5] で変換開始
  • もう一度 [F5] を押すと変換候補をリスト

下図のように、変換候補には別の符号化方式の文字も表示されます。
目的の文字を選択した状態です。この状態で [Enter] キーを押せば入力確定です。



図2
リストから目的の文字を選択
  • [Enter] キーで入力確定
  • 「萆」は U+8406 の文字

JIS X 0213 (第 3 水準漢字または第 4 水準漢字) の文字は、面の値に続いて区点コードを入力します。10 進数で 5 桁の数値です。
下図は、2 面 (第 4 水準漢字) の 94 区 86 点の「𪚲」例です。



図3
面の値を追加した区点コードを入力
  • [F5] で変換開始
  • もう一度 [F5] を押すと変換候補をリスト

図4
リストから目的の文字を選択
  • [Enter] キーで入力確定
  • 「𩒆」は U+29486 の文字

Microsoft IME の IME パッドを使用して入力する例です。区点コードを直接使用するわけではありません。区点コードに相当する漢字をリストから選択して入力します。
日本語 IME を ON にします。つまり、かな漢字変換の状態にします。[Ctrl] + [[F10] のキー操作をすると、メニューが現れます。その状態で [P] キーを押すと IME パッドが起動します。



// IME パッドの起動操作
日本語 IME を ON → [Ctrl] + [F10]、[P]



IME パッドの左端の [文字一覧] のアイコをクリックします。[文字カテゴリ] ペインの右端のスクロールバーを操作して一番下までスクロールします。

下図は、上の表の最後の文字「𣙇」を検索した結果です。
[文字カテゴリ] の JIS X 0213 (2 面) をクリックします。右ペインの文字一覧を下の方にスクロールします。2-15-30 の部分が見えたら、左から 3 番目の文字をクリックします。これが第 4 水準漢字の、区点コード 15-32 の文字です。

IME パッドを閉じるには、IME パッドの右上の [x] をクリックします。




図5
区点コードの文字をを探す
  • [文字一覧] アイコンをクリック
  • [文字カテゴリ] を一番下までスクロール
  • JIS X 0213 (2 面) を選択
  • 文字一覧をスクロール
  • 15-30 が区点コード
    先頭の 2 は面の意味





04_漢字の区点コードを調べる / 区点コードの漢字を調べる


以下の [文字情報基盤検索システム] [簡易検索] を利用すると、JIS で制定されている漢字であれば、区点コードを知ることができます。半角 / 全角の英数字、仮名文字、記号類の検索はできません。



入力欄に漢字を入力して [検索] ボタンをクリックします。検索結果のページの [JIS X 0213] の列に値があれば、それが区点コードです。[対応する UCS] は、Unicode のコートポイントです。漢字を選択すると、その漢字の詳細情報のページとなります。JIS X 0212 (補助漢字) の区点コードは、詳細情報のページにあります。




図6
漢字の区点コード
  • 16-32 が区点コード
  • 1 面は第 3 水準漢字
  • 漢字をクリックすると詳細情報表示

以下の最初のリンクは、[文字情報基盤検索システム] の [詳細検索] を利用して、読みが不明な漢字を検索する方法についての記事です。[詳細検索] では、上の [簡易検索] 同様、検索結果の漢字が JIS で制定されている漢字であれば、区点コードを知ることができます。JIS の第 1、第 2、第 3、第 4 水準漢字に限定した検索もできます。
[詳細検索] も、半角 / 全角の英数字、仮名文字、記号類は検索対象外です。



[詳細検索] では、区点コードから漢字を調べることができます。
JIS X 0213 または JIS X 0212 の入力欄に区点コードを入力して、ページ左上の [検索] ボタンをクリックします。他の入力欄にも入力されていると検索に失敗します。[検索] ボタンの右側の [クリア] をクリックすれば、全ての入力を消去できます。




図7
区点コードから漢字を調べる
  • JIS X 0212 (補助漢字) の例
  • 入力欄に 区点コードを入力
  • ページ左上の [検索] をクリック

読みが不明な漢字を検索した場合、その漢字をワープロなどに入力するのが目的であれば、漢字をコピーして貼り付ければ済みます。Unicode のコードポイントも区点コードも知る必要はありません。



[備考]
コンピュータに、かな漢字変換の機能が実装されていなかった時代、JIS (当時は日本工業規格) の区点コード表から文字を見つけて入力していた、そんな時代がありました。





05_区点コードと JIS コード


JIS コードは、区と点の値から計算する値です。通常は 16 進数 4 桁で表します。
区の値に 16 進数の 20 を加算した値と、点の値に 16 進数の 20 を加算した値を組み合わせた 16 進数の値が JIS コードです。

以降、16 進数を表すのに $ を使用することにします。
例えば、文字「粟」の区点コードは 16-32 ですから、次のように計算します。
      16 + $20 = $10 + $20 = $30
      32 + $20 = $20 + $20 = $40
結果の値をみ合わせた $3040 が、区点コード 16-32 の JIS コードです。
プログラムで JIS コードを扱う場合は、JIS コードの前後にエスケープシーケンスと呼ばれるバイナリデータを追加して処理します。これで、どの文字集合 / 漢字集合の JIS コードであるかを区別します。



// 文字「粟」の JIS コードのコンピュータ内部におけるデータ (16 進数)
1B 24 42 30 40 1B 28 42



JIS コードは、区点コードを元にして、7 ビットのデータ通信に使用できるようにしたコードです。区点コードの区と点の値が 1 ~ 94 となっているのは、この JIS コードの値と関係があります。

英語圏では、7 ビットもあればすべての制御文字、英数字、記号を表現できます。7 ビットで表現可能な文字数は 127 です。英語しか使用できなかった時代のコンピュータではそれで十分でした。そのため、インターネットメール (電子メール) でも、7 ビットのデータ形式が使用されてきました。この 7 ビットで表現するデータを ASCII コードと言います。
ASCII (アスキー) は、American Standard Code for Information Interchange の略です。日本語では「情報交換用米国標準コード」です。

ASCII コードの $0 ~ $20 までと $7F は制御コードと呼ばれていて、改行コードなどがあります。区と点は 10 進数で 2 桁ですから 0 ~ 99 までです。そのまま使用すると、制御コードと重なってしまい、制御コードが使用できなくなってしまいます。区と点の値を 1 ~ 94 に~して、$20 を加算すれば重ならず、$7E の範囲内になります。それが JIS コードです。

JIS X 0208 の第 1 水準漢字の、区 16 の JIS コードは次のようになります。
日本語のインターネットメール (電子メール) には、この JIS コードが使われてきました。 JIS コードを使用するメールでは、ASCII 文字と、JIS X 0208 で制定している記号類、JIS 基本漢字と呼ばれる第 1 水準漢字と第 2 水準漢字だけが使用できます。



16 進数 0 1 2 3 4 5 6 7 8 9 A B C D E F
3020
3030
3040
3050
3060
3070


区点コードと同様に、JIS コードでも、JIS コードの変換操作で文字が入力できます。ただし、変換可能な文字は JIS X 0208 (第 1 水準と第 2 水準) の文字だけです。
以下は、JIS コードが 7426 (16 進数) の文字「熙」を入力する例です。JIS コードを入力したら [F5] で変換を開始します。



図8
JIS コードを入力
  • [F5] で変換開始
  • もう一度 [F5] を押すと変換候補をリスト

下図のように、変換候補には別の符号化方式の文字も表示されます。
目的の文字を選択した状態です。この状態で [Enter] キーを押せば入力確定です。



図9
リストから目的の文字を選択
  • [Enter] キーで入力確
  • 「琦」は U+7426 の文字
  • 「蟶」は区点コードが 7426 の文字

[備考]
本来、JIS コードとは、JIS X 0208 の区点コードを符号化した ISO-2022-JP で制定している文字コードのことです。その後、JIS X 0212 の区点コードと JIS X 0213 の区点コードを符号化した ISO 規格が制定されました。Windows には、JSI X 0208 と JIS X 212 に相当する符号化が実装されています。JIS X 0213 相当の符号化は実装されていません。

現実問題として、コンピュータの一般的なユーザが、これらの符号化を意識しなければならない場面はほとんど考えられません。





06_ASCII のコード表


参考に ASCII (アスキー) の表を掲載しておきます。
初期のコンピュータで扱えたのは、この表の文字だけでした。
ASCII は、1963年に、現在の ANSI が制定した 7 ビット文字集合です。ASCII は (American Standard Code for Infomation Interchange) の略です。

ここでも 16 進数に $ を使用することにします。
ASCII のコードの値は $00 ~ $7F までです。$00 ~ $1F が制御コードです。$20 ~ $7E までが ASCII 文字と呼ばれる領域です。いわゆる、半角の英数字と半角の記号類です。これらは、かな漢字変換を使用しなくても、キーボードから入力できる文字です。ASCII は、16 進数の 2 桁で表しますが、JIS コードと同じく、有効なデータは 7 ビットです。

例えば大文字の A は $41 です。制御コードについては、JIS の規格票に詳しい説明があります。



制御コードは、制御文字と言うことがあります。目には見えない文字です。
$0D は、CR (キャリッジリターン) で、位置を先頭に戻すことです。$0A は、LE (ラインフィード) で、次の行に移動することです。つまり改行です。$0D, $0A は改行文字とも言います。



16 進数 0 1 2 3 4 5 6 7 8 9 A B C D E F
00
10
20 ! " # $ % & ' ( ) * + , - . /
30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
40 @ A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z [ \ ] ^ _
60 ` a b c d e f g h i j k l m n o
70 p q r s t u v w x y z { | } ~


Shift_JIS で ASCII 文字を扱う場合は、16 進数としての値は同じですが、内部では 8 ビットのデータとして処理されます。16 進数の 4 桁にすれば Unicdoe のコードポイントになります。例えば大文字の A のコードポイントは $0041 です。





07_区点コードの文字を調べる - オンライン


区点コードから JIS の区点コード表にある文字を検索するオンラインツールです。
結果の文字の表示には Yu Gothic UI を設定しています。
左側の入力エリアに区点コードを入力して [Enter] キーを押下すると検索します。区点コードは、- で区切った値、または 4 桁か 5 桁の 10 進数です。検索履歴を 5 回まで表示します。

本ページを表示した時の、区点コード 40-25 の文字は JIS X 0208 のコード表にあります。これと同じ文字が JIS X 0213 にもあります。区点コードは 1-40-25 です。




区点 JIS X 0208 JIS X 0213 JIS X 0212




08_文字の区点コードを調べる - オンライン


文字の区点コードを調べるオンラインツールです。
文字の表示には Yu Gothic UI を設定しています。
左側の入力エリアに文字を入力すると、リアルタイムで検索します。先頭から 5 文字までを検索して、結果の表に表示します。

JIS X 0208 の 2 行目は、文字符号化方式 ISO-2022-JP における文字コードです。これが JIS コードと言われている値です。
JIS X 0208 に「ASCI」という文字が表示された時は、その文字は ASCII 文字です。ASCII 文字には区点コードはありません。JIS X 0208 に区点コードも「ASCII」の表示もない場合、その文字は「環境依存文字」です。




文字 JIS X 0208 JIS X 0213 JIS X 0212 UTF-16


UTF-16 が 16 進数で 5 桁の文字は「サロゲートペア」と呼ばれている文字です。サロゲートペアの文字は「環境依存文字」です。
JIS X 0213 には結合文字があります。本ツールは、結合文字や異体字セレクタを使用する、複数のコードポイントで構成されている文字は、各々のコードポイントに分解して表示します。






09_Unicode のコードポイントの文字を調べる - オンライン


上のツールでは、JIS の区点コード表にない文字の、Unicode のコードポイント (文字コード) を知ることができます。以下は、逆に Unicode のコードポイントの文字を表示するツールです。ただし、Unicode に登録されている文字の全てが表示可能なわけではありません。

左側の入力エリアにコードポイントを入力して [Enter] キーを押すと、該当する文字があればその文字を表示します。コードポイントは、16 進数の 4 桁、または 5 桁を入力します。先行する 0 は省略できます。


[ Enter ] で実行


U+0080 から U+00FF まてば「C1 制御文字とラテン1補助」と呼ばれている領域です。この領域の文字は、実際にはこの領域にはなくて、リダイレクトされる文字があります。例えば U+0083 の実際のコードポイントは U+0192 「ƒ」です。









//--------------------------------------------------------------------------