4. JISコード
4−1 JISコードとは
4−2 半角ローマ字・半角カタカナ (1バイト文字) 4−3 全角文字 (2バイト文字) 4−4 旧JIS・新JIS 4−5 JIS X 0213 4−6 ISO-2022-JP 4−1 JISコードとはJISは日本工業規格 ( Japanese Industorial Standard ) の略称で、 工業製品の様々な規格を定めています。各電子機器で使われるデータの互換性を確保するため、 文字コードもJISによって定められてるわけです。 JISコードの正式な名称は、「情報交換用符号化文字集合」といいます。 何度かの改訂を経て、現在は2000年に制定された「JIS X 0213」が主に使われています。JISで規定されている文字コードには、次のようなグループがあります。
4−2 半角ローマ字・半角カタカナ (1バイト文字)俗にいう半角ローマ字・カタカナ=JIS1バイトコードを定めた JIS X 0201 の正式名称は、「7ビット及び8ビットの情報交換用符号化文字集合」といいます。 国際規格 ISO 646 に準拠して日本で制定されました。規定されている 文字の種類から、ANK文字などとも呼ばれます。(Arphabet, Numbers, Katakana)半角ローマ字に関して ASCII と異なるのは、0x5C が '\' から '¥' へ、 0x7E が '〜' から ' ̄' へ変えられていることぐらいです。 ところが、1997年の JIS X 0208 (後述する全角文字のための規格)改訂に際して、 正式に「JIS X 0201 カナの方は将来的には削除する」(附属書1)と明記されました。 過去資産との互換性を考え、当分はどのコンピュータもJIS半角カナを扱えるような仕組みを残すでしょうが、将来にわたっての表示、 印刷可能性は保証されません。 正式名称にある通り、7ビット符号(JIS7)、8ビット符号(JIS8)の2種類が規定されています。
7ビット符号(JIS7)の方では、単に文字コードを並べただけでは半角ローマ字とカタカナの区別がつかなくなってしまいます。 例えば半角カタカナ 'ア' は本来 0xB1 というコード番号ですが、JIS7では8ビット目を扱わないので (下図の赤い数字のみを問題にするということ)、 0x31 すなわち半角数字 '1' と区別がつきません。
JIS X 0201 の元となった ISO-646 で定められている制御コード「シフトイン(SI)」「シフトアウト(SO)」を挟む方法や、 後述する ISO-2022-JP のエスケープ・シークエンスを挟む方法などがあります。 4−3 全角文字 (2バイト文字)俗に全角文字といわれる文字には、いくつかのグループがあります。・JIS X 0212 〜 JIS補助漢字 ・JIS X 0213 〜 JIS第3水準・第4水準 これら2バイト文字コードには、共通して以下の2通りの表現方法があります。 ◆ JIS区点番号 ◆ JISの採用文字一覧表の正式な形といっていいものです。 文字の配列を4桁の10進数で表現したもので、前の2桁を「区」(第01区〜94区)、 後の2桁を「点」(第01点〜94点)と呼びます。つまり、JIS全角文字は第1区〜第94区という94個のブロックに仕切られ、 各ブロックには第1点〜第94点に位置する94個の文字が配置されているということです。 理屈上は 94×94 = 8836 文字まで配置可能ですが、拡張用の未定義領域を残してあるので、 実際は第1、第2水準で約 6,800 文字が配置されています。 ちなみに、なぜ94×94などという中途半端な数字なのかと言うと、 次に述べるJIS16進数コード(2バイトコード)との兼ね合いです。 JIS X 0211 制御コードの領域(0x00〜0x20, 0x7F)を避けて、第1バイト・第2バイトともに 0x21 〜 0x7E (10進数で 33 〜 126) つまり94個分の範囲しか用いていないのに合わせてあるのです。
'愛'という字は ◆ JIS16進数コード ◆ JIS区点番号一覧をコンピュータで扱いやすいように、4桁の16進数(2バイト)で符号化した文字コードです。 上述の理由から、第1バイト・第2バイトともに 0x21 〜 0x7E の範囲の数字のみを当てています。 従ってJIS16進コードは 0x2121 〜 0x7E7E の範囲となります。
'愛' という字のJIS16進コードは 0x3026 です。 4−4 旧JIS・新JISJIS第1水準・第2水準漢字を規定する JIS X 0208 は、何回か改訂されました。このうち、1983年の改訂が非常に大幅な変更だったため、1978年に制定された JIS X 0208:1978 を旧JIS、JIS X 0208:1983 以降を新JISと呼んで区別することがあります。 1990年頃まで日本のパソコンシェアのトップだったNEC PC-9801 シリーズがかたくなに旧JISを採用し続けたため、 2000年頃までは混乱の元でした。 ◆ 字形変更の例 (200字以上) ◆
◆ 字形変更+追加の例 (4組) ◆
◆ 字形交換の例 (22組) ◆
98シリーズのパソコンも一般の職場・家庭では見かけることがなくなり、Windows も Windows10 が普及してきた現在、 旧JIS、新JISといった言葉もほぼ聞かれなくなりました。 4−5 JIS X 0213JIS X 0213は、JIS X 0208:1997を拡張する目的で、2000年に制定されました。 主な変更点は、記号、符号などの追加と、第三・第四水準漢字などの正式サポートです。 JIS X 0208 と比べ、計約4000字追加されました。第三・第四水準漢字をサポートするためには1万字以上の区点番号が必要ですが、従来の区点 94×94 = 8836 では足りません。 そこで、区点の概念が拡張されて「面」という範疇が作られました。 JIS X 0213 の区点コードは、「面-区-点」で表されます。 記号〜第三水準漢字までは「1面」とし、第四水準漢字は「2面」に振り分けられています。 また、この規格は、2004年に改定されています(JIS X 0213:2004)。 この時、168字の字形を従来のものから変更しているのですが、Windows が VISTA から JIS2004 を正式に採用し、 日本語フォントのMS明朝、MSゴシックをこの最新版に合わせたことから、古いWindows(のフォント)とVISTA以降(のフォント) との間で、かつての新JIS、旧JIS問題を彷彿とさせるような問題が生じました。 人名漢字などに正確を期したい場合、古いPCと新しいPCが混在している環境だと、 「どのPCで出力したかで、'辻'という字のしんにょうの点が1個になったり2個になったり」 ということが起こり得ます。素人には、「どこが問題なのか」からしてわかりづらく、なかなかやっかいな問題でした。 ◆ JIS X 0213:2004の字形変更例(一番右が Windows VISTA 以降) ◆ (http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisrev.htmlの情報を加工させていただきました) Windows10 が登場し、Windows XP の正式サポートも切れた 2018 年現在、WindowsXP 以前のPCを使われている職場環境・ 家庭も少なくなってきていることと思います。Windows XP の完全引退とともに、上記の問題も解消されるでしょう。 4−6 ISO-2022-JP7ビット符号体系において、半角ローマ字・半角カナ・全角文字は、 単にコードを1バイト単位で見ただけではどの文字種なのか区別できません。例えば、全角文字 '愛' を表わすコード
0xIB (ESC) で始まることから「エスケープ・シークエンス」と呼ばれる制御コードによってコードの種類を切り替えて、 半角ローマ字、半角カナ、全角文字を混在させます。 制御文字も含めすべてのコードが 0x00 〜 0x7E の間に収まっているため、 7ビット符号しか受け付けないシステムも多いインターネットメール・ニュース関係と親和性の高い規格です。 現在の所、中国語、韓国語との混在まで考慮できる ISO-2022-JP-2 までありますが、 この章ではひとまずJISの範囲に収まっている ISO-2022-JP-1 で使われる文字種を紹介します。
ISO-2022-JP では、基本的に「JIS X 0201 半角カナは使わない」 という決まりになっています。 ただし、送信側、受信側双方のアプリケーションが [ESC] ( I をサポートしていれば利用できる場合も多いようです。 例えば "
8バイトの文字を表現するのに、20バイト必要です。 エスケープ・シークエンスは、切り替えのたびに3バイトものデータが付け足されてゆくので、 半角文字と全角文字が混ぜこぜになっているような文書では、これだけでかなりのデータ量をくってしまいますし、 表示文字数と実際のデータ量が異なるわけですから、プログラムを開発する側からすると、複雑な処理を作らなければなりません。 コンピュータ内の内部処理には向かない規格です。 そのため、データ量のスリム化、処理の簡素化などを目的として、「シフトJIS」というコード体系が考え出されました。 |