技術情報
シフトJISコード
シフトJISコードはパソコンの日本語コードとして普及しています。
文字どおりJISコード(JIS X208)を1バイトコード(JIS X201)に重ならないようにシフトしたものです。
まず、JISコードの第一バイトをJIS X201で使われていない領域にシフトします。(0x80~0x9F、0xE0~0xFF)
つぎに第二バイトも0x40~0xFCにシフトします。(0x7Fは避けてシフトします。)
シフトの計算は以下のようになっています。
第一バイト | |||
---|---|---|---|
区分 | JISコード(A) | 計算式 | シフトJISコード |
全区 | 0x21~0x5E | (A+1)/2+0x70 | 0x81~0x9F |
0x5F~0x7E | (A+1)/2+0xB0 | 0xE0~0xEF | |
第二バイト | |||
区分 | JISコード(B) | 計算式 | シフトJISコード |
奇数区 | 0x21~0x5F | B+0x1F | 0x40~0x7E |
0x60~0x7E | B+0x20 | 0x80~0x9E | |
偶数区 | 0x21~0x7E | B+0x7E | 0x9F~0xFC |
第一バイト
ASCII領域とJISコードの第一バイトが重なるため、ASCII、半角カナのいずれとも重ならない 0x80~0x9F、0xE0~0xEFに第一バイトを移動させます。
「JIS領域1」のコードは「シフトJIS領域1」へ、「JIS領域2」のコードは「シフトJIS領域2」へ、それぞれ移動します。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ASCII 領域 |
シ フ ト JIS 領 域 1 |
半 角 カ ナ |
シ フ ト JIS 領 域 2 |
未 定 義 |
|||||||||||
1 | JIS 領 域 1 |
JIS 領 域 2 |
||||||||||||||
2 | ||||||||||||||||
3 | ||||||||||||||||
4 | ||||||||||||||||
5 | ||||||||||||||||
6 | ||||||||||||||||
7 | ||||||||||||||||
8 | ||||||||||||||||
9 | ||||||||||||||||
A | ||||||||||||||||
B | ||||||||||||||||
C | ||||||||||||||||
D | ||||||||||||||||
E | ||||||||||||||||
F |
第二バイト
隣り合う奇数区と偶数区が同じ第一バイトを共有するため、第二バイトは 94×2=188の領域を使用します。
制御コードの領域を避けるため、0x40~0x7E、0x80~0xFCにシフトします。(奇数区は0x40~0x7E,0x80~0x9E、偶数区は0x9F~0xFC)
ASCIIと重複するコードを含むため、処理には注意する必要があります。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ASCII領域 | 奇数区 | 偶数区 | |||||||||||||
1 | ||||||||||||||||
2 | ||||||||||||||||
3 | ||||||||||||||||
4 | ||||||||||||||||
5 | ||||||||||||||||
6 | ||||||||||||||||
7 | ||||||||||||||||
8 | ||||||||||||||||
9 | ||||||||||||||||
A | ||||||||||||||||
B | ||||||||||||||||
C | ||||||||||||||||
D | ||||||||||||||||
E | ||||||||||||||||
F |
このコードの特徴は以下のとおりです。
- ASCIIや半角カナを含むJIS X201と共存できる。
- コード切り換えのためのエスケープシーケンスが必要でない。
- 0x80~0x9F、0xE0~0xEFのコードは2バイト文字の第一バイトなので、次のバイトとあわせて1文字として処理する。
- 第二バイトは他のコードと重複するため、注意が必要。