なたで日記

いろいろな思ったこと書きますヽ(^▽^ゞ)

Shift_JISとWindows-31J(CP932)とJIS漢字水準の関係について

time 2018/11/18

Shift_JISとWindows-31J(CP932)とJIS漢字水準の関係について

はじめに

こんにちは!なたでです!

今回は文字コードの話、特に日本語についての話です。皆さん、第1水準、第2水準、拡張文字、Windows-31J(CP932)に入る文字は一体何かとか、自信を持って把握していますでしょうか。今回は、その辺のワードを一度整理して、まとめてみました。

単語の解説

基本用語

文字コード

文字コードには2つの意味がある。文字集合と符号化方式である。

文字集合

JIS X 0208など、文字の集合である。これをどのように記録するかは符号化方式による。

符号化方式

ISO-2022-JP、EUC-JP、Shift_JISなどがある。

コードセット

文字集合と符号化方式をまとめたもの。

常用漢字

学校で習う基本的な漢字。1923年に文字集合が生まれ、1981年の時点での常用漢字は1945文字である。

改定常用漢字

2010年に常用漢字に対して改定を行った。2136文字(既存の5文字を削除、196文字を追加)となる。例えば、嵐、俺、丼、虹、枕、串、脇といった今では目にする漢字が含まれる。

JIS漢字水準

JISで定められた漢字規格でいくつかの水準がある。

フォント

パソコンの画面上に文字集合を表示させるためのデータ。文字集合が対応していも、フォントが用意されていなければ表示はできない。

JIS漢字水準の種類

JIS第1水準漢字

1981年の常用漢字1945種類を含んだ2965種類ある漢字集。JISX 0208に含まれる。使用頻度が高い文字が含まれる。

JIS第2水準漢字

3390種類ある漢字集。JISX 0208に含まれる。異体字、旧字体など使用頻度が低い漢字が含まれる。

JIS第3水準漢字

1259種類ある漢字集。JIS X 0213:2004に含まれる。例えば、人名用漢字許容字体や地名で使用される漢字が追加されている。

JIS第4水準漢字

2436種類ある漢字集。JIS X 0213:2004に含まれる。第3水準以外で、よく利用される文字が追加されている。

文字集合の種類

JIS X 0201

8ビットで表す文字集合。ASCIIコードに、カタカナ(半角カタカナ)を加えている。1969年に制定された。

JIS X 0208

6879字の文字集合。1978年にJIS C 6226-1978として作成されてその後改定している。漢字は、第1水準2,965文字、第2水準3,390文字が収納されている。漢字以外の記号も含まれる。

外字

Windowsでは独自に自由に文字を追加できる外字の領域を用意していた。CP932で言うと0xf040〜0xf9fcである。JIS X 0208の集合範囲外の範囲であるが、後に制定されたJIS X 0213の範囲内でもある。JIS X 0208の1997年における改訂で、今後の互換性を維持するために、この未定義領域に外字を入れることが禁止された。

IBM拡張文字

Windowsが用意した外字領域に対して、IBMが定義(115区〜119区を使用)した文字列。CP932で言うと0xfa40~0xfc4bである。

NEC選定IBM拡張文字

IBM拡張漢字は外字に拡張を加えていた。これを未定義であったJIS X 0208の範囲内(89区〜92区)にNECが移動させたもの。CP932で言うと0xed40~0xeefcである。つまり、CP932では、同じ文字がIBMの範囲と、NEC選定部分とで2か所含まれる場合がある。

NEC特殊文字

JIS X 0208の範囲内の未定義部分に独自に追加した記号。CP932で言うと0x8740~0x879Cである。後に制定されたJIS X 0213に流用されている。

JIS X 0213

JIS X 0208:1997を拡張した文字集合。JIS第3水準漢字とJIS第4水準漢字の漢字、及び記号等含めて4354字が追加されており、6879+4354=11233字の文字集合となる。漢字以外の文字も含まれる。NEC特殊文字はそのまま採用された。JIS X 0213:2004では、もともとあったフォントの字形を変形しており、同一文字でも見た目が変わる場合がある。

CP932 文字集合

Windowsで使用された文字集合。JIS X 0208の範囲と、IBM拡張文字の範囲と、NEC選定IBM拡張文字の範囲の3種類を入れた文字集合。Windowsでは、これをShift_JISの符号化方式で使用する。

Unicode

全世界の文字を入れた文字集合である。外字領域もマッピングされて含まれている。

符号化方式の種類

ISO-2022-JP(JISコード)

7ビットで表す文字符号化。エスケープシーケンスが入る特徴を持つ。7ビットまでしか利用できないメールなどで利用された。

EUC-JP

UNIXなどで利用された文字符号化。

Shift_JIS(SJIS)

ASCIIコードや半角カタカナは1バイト。日本語を含むものは2バイトで表す符号化。1バイト文字は半角文字、2バイト文字は全角文字と呼ばれる。Shift_JISを開発設計者は、JIS X 0201と、JIS X 0208を含めてよいと企図している。

Windows-31J(CP932、Microsoftコードページ932)

Windowsでは、上記のShift_JISの範囲に加えて、IBM拡張文字の範囲、NEC特殊文字の範囲、NEC選定IBM拡張文字の範囲、外字の4種類を含む形でShift_JISで記録しており、これがWindows-31Jである。仕様を決める際に例えば、Shift_JISの文字の範囲と言ったときに、本来のShift_JISの範囲なのか、あるいは独自拡張したWindows-31Jの範囲なのか、使用者には用語の確認が求められる。なおWindowsが当初Shift_JISの範囲にメーカー独自で変更を加えてもいいというCP932が作成され、これに対して拡張を加えたものをWindows-31Jとして登録した経緯となるが、拡張文字を含めた文字含めてCP932と呼ぶ場合もある。

Shift_JIS-2004

JIS X 0213のJIS第3水準漢字とJIS第4水準漢字を加えたShift_JIS。NEC選定IBM拡張文字(0xed40~0xeefc)はJIS第3水準漢字に、IBM拡張文字(0xfa40~0xfc4b)はJIS第4水準漢字に、それぞれバッティングしている。NEC特殊文字(0x8740~0x879c)はそのまま取り込まれている。

Unicode

一般的には符号化方式ではない。しかしWindowsのメモ帳で、文字コードをUnicodeにすると、Unicodeの文字集合で、文字符号化は「UTF-16 LE BOM付き」で保存される。従って、Windowsの世界では、UnicodeはUTF-16 LEを指す場合があるため、これもまた使用者に用語の確認が必要である。Unicodeについては、後述の予定。

まとめ

JIS X 0201では、ASCIIコードと半角カタカナ。そしてJIS X 0208では、常用漢字を含んだ第一水準と、異体字を含んだ第二水準、記号が定められた。

初期のShift_JISでは、JIS X 0201とJIS X 0208を含められると規定された。IBMと、NECは、JIS X 0208に対して足りない文字を独自に拡張した。Windowsでは、Shift_JISにこれらの独自拡張文字を、追加した文字コード、Windows-31Jを定めて利用するようになった。

JIS X 0213:2004では、人名用漢字許容字体や地名で使用される漢字などの第三水準、それ以外でよく利用される漢字の第四水準が制定され、これを含めた符号化Shift_JIS-2004を作成した。Shift_JIS-2004は、本来のShift_JISとは互換性があるが、独自拡張を入れたWindows-31Jとは互換性がない符号化となった。

第三水準と第四水準の中には、IBM拡張文字の文字集合が含まれている。例として、IBM拡張文字の「嵂」は、第四水準の文字として決められた。逆にIBM拡張文字にあるのに、第三水準と第四水準にさえ含まれていない文字、例えば「髙」がある。

このように、IBM拡張文字が対応しているWindows-31Jは、第三水準と第四水準の一部対応という形になるし、逆に第一、第二、第三、第四にも含まれない文字、「髙」などにも対応しているということになる。

参考

コメントを残す




プロフィール

なたで

なたで

明るくて楽しいことが好きです!モノづくりや旅が趣味です!

RSS フィード RSS feed GitHub GitHub Twitter Twitter YouTube YouTube



sponsored link

タイムライン