日本語で主に使われる「シフトJIS」は、次のように実装されています。
| JIS X 0208 | JIS X 0213 | 独自文字 | |||||||
|---|---|---|---|---|---|---|---|---|---|
| 第一 | 第二 | 1983 | 1990 | 第三 | 第四 | NEC | IBM | Mac | |
| SJIS(汎用) | ○ | ○ | ○ | ○ | △ | × | ○ | ○ | × |
| JIS C 6226 | △ | △ | × | × | × | × | × | × | × |
| JIS X 0208(最新) | ○ | ○ | ○ | ○ | × | × | × | × | × |
| JIS X 0208-1983 | ○ | ○ | ○ | × | × | × | × | × | × |
| JIS X 0208-1990 | ○ | ○ | ○ | ○ | × | × | × | × | × |
| JIS X 0213:2000 | ○ | ○ | ○ | ○ | ○ | ○ | × | × | × |
| JIS X 0213:2004 | ○ | ○ | ○ | ○ | ○ | ○ | × | × | × |
| PC-9801 | △ | △ | × | × | × | × | ○ | × | × |
| EPSON PC | ○ | ○ | ○ | × | × | × | ○ | × | × |
| IBM | △ | △ | × | × | × | × | × | ○ | × |
| Windows-31J | ○ | ○ | ○ | ○ | × | × | ○ | ○ | × |
| Windows Vista | ○ | ○ | ○ | ○ | × | × | ○ | ○ | × |
「もじかん」では様々な「シフトJIS」に対応しつつ、一般の利用に支障を出さないようにするため、「SJIS」と「Shift_JIS」は別の意味を割り当てています。
標準の文字集合が「Shift_JIS」なのに対し、広く使われており、最も汎用的と考えられるよう実装された符号は「SJIS」になっています。
CCSを指定しない「SJIS」の場合、89区以降については、いわゆるNEC選定IBM拡張文字やIBM拡張文字、Windows外字がある、Windowsの標準的なCCSであるものとして処理されます。
このため、ISO-2022-JP-3系やISO-2022-JP-2004系で読み込まれた文字をCCS無指定のシフトJISで出力した場合、出力が単に符号位置の変換だけに留まらないことがあります。
SJIS-EXは、WZ Software,Inc.のソフトウェア「WZ EDITOR」シリーズで対応する独自の符号です。WZ EDITOR 5やWZ EDITOR 6で対応していることが確認されています。
0x80または0xa0に続く2バイト、計3バイトのシーケンスで、Windows-31Jに存在しないUnicode文字を符号化します。U+10000を超えるものは、サロゲートペアで表現するため計6バイトのシーケンスになります。
WindowsのEUC-JPは、正式には「CP51932」といいます。
この標準EUC-JPデコーダーは、JIS X 0208の範囲内しか対応していません。つまり、G3にあるJIS X 0212は対応していません。
そして、多国語対応のWindowsは、内部はUnicode(UTF-16)で動作しますので、入力されたEUC-JP符号列はUnicodeに変換して使われます。その変換処理は、次のようにして行なわれているようです。
例えば「森鷗外」の「鷗」はJIS X 0208にはなく、JIS X 0212またはJIS X 0213に存在します。EUC-JPでJIS X 0212を使用する場合、文字はG3にあるためSS3(0x8f)を冠して「0x8f 0xec 0xbf」という3バイトの符号列になります。
さて、CP51932デコーダーはSS3に対応していないため、これは変換せずそのまま残します。次に、0xec 0xbfをSJISに変換し、0xe6 0xbdとします。都合「0x8f 0xe6 0xbd」という、異常な符号列が完成します。
次に、この文字列をSJIS(CP932)として解釈し、Unicodeへと変換します。
結果として、「森鷗外」は「森乗ス外」に文字化けすることになります。
「もじかん」は、この異常なEUC-JPの入出力に対応しています。内部処理は全く違いますが、同様の結果が得られるように対応しました。もし万が一利用する必要がある場合は、入力の符号名を「CP51932」としてください。但し、この符号は、多くの場合実用になりません。
なお、CCSのみをWindowsに切り替える「EUC-JP/WIN」とは、動作が異なります。こちらは、正常なEUC-JPの実装がなされています。
この動作については、「「[區鳥]」が「乗ス」に化けるメカニズム」を参考に致しました。
汎用機は、EBCDIC/EBCDIKの拡張である、JEF(富士通)、KEIS(日立)、JIPS(NEC)などが使用されています。
「もじかん」では、これら全てに対応する予定です。また、拡張漢字/拡張非漢字セットにも、追加ライセンスで対応する予定です。
現時点で想定しているのは、標準ライセンスの範囲内だけです。
太字で強調したものは符号名の仮称。
現在開発中です。
価格は検討中ですが、標準ライセンスの10から20倍程度を想定しています。
JEFは、JEF拡張漢字(4,039字)、JEF拡張非漢字(1,009字)の計5,049字対応
KEIS(83)は、KEIS拡張漢字(5,588字)、KEIS拡張非漢字(966字)の計6,554字対応
ケータイ絵文字の相互変換や、SJIS/UTF-8の符号変換に対応しています。
詳細は「ケータイ絵文字」を参照して下さい。
PC-9801システム外字は情報が不足しているため、完全な対応はできていません。
マニュアルに掲載されている文字コード表を提供して下さる方がいましたら、ご協力をお願い致します。
罫線文字は、シフトJISの12区4点から12区79点までの文字について対応し、Unicodeと対応させることで他の符号との相互変換を可能としています。
各種の符号で、システム外字(いわゆる機種依存文字など)に対応しています。
必要に応じて、文字集合(CCS)を指定してください。符号化方法(CES)に続き、スラッシュ(/)で区切ってCCS名を記述します。
CCS自体を切り替えるため、「/98」や「/IBM」を使用すると、基本的な文字集合はいわゆる旧JIS (JIS C 6226) になります。
シフトJISの場合、概ね次のようなCCS名で登録されています。
例えば、SJIS/98 などとすれば、通常のシフトJIS符号の仕様に、98の文字集合を割り当てます。
EUC-JPの場合、次の3種類を用意しています。
通常のEUC-JPの範囲内でCCSのみを切り替えるには、シフトJISと同様にCCS名を指定してください(例: EUC-JP/WIN)。但し、EUC-JPの仕様上、シフトJISと完全な互換性を有する文字集合にはなりません。
シフトJISと完全に交換可能なEUC-JPの拡張は、eucJP-openシリーズです。「eucJP-ms」「eucJP-ascii」「eucJP-0201」の何れかをご利用下さい。
CP51932はWindowsの標準で、バグとしか思えない仕様も可能な限り再現しました。使い物になりません。
注意点
EUC-JP/WINと、eucJP-ms等では、IBM拡張漢字(NEC選定IBM拡張漢字含む)の符号位置が違っています。EUC-JP/WINはNEC選定IBM拡張漢字がG1のシフトJISと同等の区に配置されますが、eucJP-msはG3の空き領域に配置されます。
ご利用の際はご注意下さい。