Shift-JIS のコーディング

 

 

  目次  
【1】 Shift-JIS の概要
【2】 未定義領域への外字の登録
【3】 JIS / EUC-jp への変換

 

 

 

Shift-JIS の概要

 

Shift-JIS (以後 SJIS) は JISX0201ラテン, JISX0201カナ, JISX0208 のコーディング方法です。 JISX0201ラテンはそのままのコーディングです。 JISX0201カナは (コード番号) | 0x80 です。 JISX0208 と SJIS との間の変換は 変換公式 で行います。 Unicode と SJIS との間の変換は変換テーブル ( 下記表4参照 もしくは Unicode.org で提供されている テーブル ( Public/MAPPINGS/ などから入手可能 ) ) で行います。

 


 
 
 

未定義領域への外字の登録

 

SJIS を語る上で欠かせないのが機種依存文字の問題です。 JISX0208 は2バイト94領域文字なので 94x94 = 8836 文字分 のスペースがありますが、全てが埋まっているのではなく、 文字が定義されていないコード番号も存在します。 SJIS も文字が定義されていないコード番号があります。 この定義されていないコード番号に各企業が勝手に文字を割り当てた のが「機種依存文字」です。

 

機種依存文字が含まれる SJIS は厳密には SJIS ではありません。 厳密に区別するため、例えば Windows でつかわれる文字セット/エンコーディングは Code Page 932 と名前がつけられています。 Mac の場合は Code Page 10001 というコードページの番号が振られているようです。

 


 
 
 

JIS / EUC-jp への変換

 

SJIS で JISX0201 以外の文字は1文字2バイトで表します。 上位バイトは 0x80-0x9F, 0xE0-0xFC 下位バイトは 0x40-0x7E, 0x80-0xFC の範囲を取り、合計 11468 文字定義できます。 JIS コードで表現する場合、変換公式を適応しますが JISX0208 は 8836 文字なので、コード番号によっては JISX0208 に変換できません。 つまり JIS コードや EUC-jp で表現できません。 具体的には 上位バイトが 0xF0-0xFC のとき JISX0208 に 変換できません。

 

表4 に正規の SJIS の文字の範囲と Windows 系と Macintosh 系の 機種依存文字の範囲をそれぞれ示します。 IBM選定IBM拡張文字は上位バイトが 0xF0-0xFC の範囲内に あるため JISX0208 に変換できません。 なお、表中のアンカー(リンク)先は UCS との文字コード変換表です。

 

表 4 : コード番号と機種依存文字
文字セット コード位置
JISX0201 ラテン : 0x21-0x7E
カナ : 0xA1-0xDF
JISX0208 非漢字 : 0x8140-0x84BE (途中多数未定義有)
第一水準 : 0x889F-0x9872
第二水準 : 0x989F-0x9FFC, 0xE040-0xEAA4
Windows 系
機種依存文字
NEC 特殊文字 0x8740-0x879C (途中未定義有)
NEC選定IBM拡張文字 0xED40-0xEEFC (途中未定義有)
IBM選定IBM拡張文字 0xFA40-0xFC4B(途中未定義有)
Macintosh 系
機種依存文字
Apple 拡張文字 0x00FD-0x00FF
0x8540-0x886D (途中未定義有)
0xEB40-0xED96 (途中未定義有)

 


※ Apple の変換テーブルのギリシャ数字(小)を訂正しました。 干場様ご指摘ありがとうございました。

 


Copyright (C)   1999-2004   いまでぃ    All Rights Reserved.
本ホームページに掲載・使用されている全ての画像及び文章の無断使用・転載を禁止します。
本ホームページの内容について いまでぃ は一切保証いたしません。
本ホームページはリンクフリーです。


製作  いまでぃ  
最終更新日  2004/07/11
文字コードの解説に戻る