未来情報産業株式会社 追加情報


LOCATION:

各種の情報

目次‐日本語関係

日本語の符号に関する各種情報

小目次

SHIFT_JIS

日本語で主に使われる「シフトJIS」は、次のように実装されています。

  JIS X 0208 JIS X 0213 独自文字
第一第二19831990第三第四NECIBMMac
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

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

WindowsのEUC-JPは、正式には「CP51932」といいます。

この標準EUC-JPデコーダーは、JIS X 0208の範囲内しか対応していません。つまり、G3にあるJIS X 0212は対応していません。

そして、多国語対応のWindowsは、内部はUnicode(UTF-16)で動作しますので、入力されたEUC-JP符号列はUnicodeに変換して使われます。その変換処理は、次のようにして行なわれているようです。

  1. アルゴリズム的に、EUC-JP(CP51932)→SJIS(CP932)
  2. 但し、JIS X 0208の範囲外となるものは、そのまま符号を残す
  3. 変換表で、SJIS(CP932)→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へと変換します。

  1. 0x8f 0xe6 → U+4E57 (乗)
  2. 0xbd → U+FF7D (ス)

結果として、「森鷗外」は「森乗ス外」に文字化けすることになります。

「もじかん」は、この異常なEUC-JPの入出力に対応しています。内部処理は全く違いますが、同様の結果が得られるように対応しました。もし万が一利用する必要がある場合は、入力の符号名を「CP51932」としてください。但し、この符号は、多くの場合実用になりません。

なお、CCSのみをWindowsに切り替える「EUC-JP/WIN」とは、動作が異なります。こちらは、正常なEUC-JPの実装がなされています。

この動作については、「「[區鳥]」が「乗ス」に化けるメカニズム」を参考に致しました。

JEFやKEISなど

汎用機は、EBCDIC/EBCDIKの拡張である、JEF(富士通)、KEIS(日立)、JIPS(NEC)などが使用されています。

「もじかん」では、これら全てに対応する予定です。また、拡張漢字/拡張非漢字セットにも、追加ライセンスで対応する予定です。

現時点で想定しているのは、標準ライセンスの範囲内だけです。

標準ライセンスで対応

太字で強調したものは符号名の仮称。

  • 富士通(JEF)
    • jefc EBCDIC(英小文字) + JEF (JIS C 6226-1978)
    • jefk EBCDIC(カタカナ) + JEF (JIS C 6226-1978)
    • jefa EBCDIC(ASCII) + JEF (JIS C 6226-1978)
    • jefc9p EBCDIC(英小文字) + JEF (JIS C 6226-1978、9ポイント)
    • jefk9p EBCDIC(カタカナ) + JEF (JIS C 6226-1978、9ポイント)
    • jefa9p EBCDIC(ASCII) + JEF (JIS C 6226-1978、9ポイント)
  • 日立(KEIS)
    • keis7c EBCDIC(英小文字) + KEIS78 (JIS C 6226-1978)
    • keis7k EBCDIC(カタカナ) + KEIS78 (JIS C 6226-1978)
    • keis8c EBCDIC(英小文字) + KEIS83 (JIS X 0208-1983)
    • keis8k EBCDIC(カタカナ) + KEIS83 (JIS X 0208-1983)

追加ライセンスで対応予定

現在開発中です。

価格は検討中ですが、標準ライセンスの10から20倍程度を想定しています。

  • 富士通(JEF)
    • jefcEX EBCDIC(英小文字) + JEF (JIS X 0208 +拡張)
    • jefkEX EBCDIC(カタカナ) + JEF (JIS X 0208 +拡張)
    • jefaEX EBCDIC(ASCII) + JEF (JIS X 0208 +拡張)
    • jefc9pEX EBCDIC(英小文字) + JEF (JIS X 0208 +拡張、9ポイント)
    • jefk9pEX EBCDIC(カタカナ) + JEF (JIS X 0208 +拡張、9ポイント)
    • jefa9pEX EBCDIC(ASCII) + JEF (JIS X 02080208 +拡張、9ポイント)
  • 日立(KEIS)
    • keis7cEX EBCDIC(英小文字) + KEIS78 (JIS C 6226-1978 +拡張)
    • keis7kEX EBCDIC(カタカナ) + KEIS78 (JIS C 6226-1978 +拡張)
    • keis8cEX EBCDIC(英小文字) + KEIS83 (JIS X 0208-1983 +拡張)
    • keis8kEX EBCDIC(カタカナ) + KEIS83 (JIS X 0208-1983 +拡張)
  • NEC(JIPS)
    • JIPSJ JIPS(J) (JIS C 6226-1978+NEC特殊文字、以下同じ)
    • JIPSE JIPS(E) (EBCDIC)
    • JIPSIJ NEC内部コード(J)
    • JIPSIE NEC内部コード(E) (EBCDIC)

JEFは、JEF拡張漢字(4,039字)、JEF拡張非漢字(1,009字)の計5,049字対応

KEIS(83)は、KEIS拡張漢字(5,588字)、KEIS拡張非漢字(966字)の計6,554字対応

ケータイ絵文字に関する各種情報

ケータイ絵文字の相互変換や、SJIS/UTF-8の符号変換に対応しています。

詳細は「ケータイ絵文字」を参照して下さい。

システム外字に関する情報

小目次

PC-9801システム外字

  • PC-9801システム外字
    • 半角2バイト文字 (半角罫線未対応)
    • 罫線素片
    • ○数字
    • ローマ数字
    • 記号
    • NEC選定IBM拡張文字
  • IBMシステム外字
    • IBM拡張文字

PC-9801システム外字は情報が不足しているため、完全な対応はできていません。

マニュアルに掲載されている文字コード表を提供して下さる方がいましたら、ご協力をお願い致します。

罫線文字は、シフトJISの12区4点から12区79点までの文字について対応し、Unicodeと対応させることで他の符号との相互変換を可能としています。

対応状況

各種の符号で、システム外字(いわゆる機種依存文字など)に対応しています。

必要に応じて、文字集合(CCS)を指定してください。符号化方法(CES)に続き、スラッシュ(/)で区切ってCCS名を記述します。

PC-9801のシステム外字を含むシフトJISを、UTF-16に変換する例
gtef infile outfile -i:sjis/98 -o:utf16
IBM PC DOSのシステム外字を含むシフトJISを、UTF-16に変換する例
gtef infile outfile -i:sjis/ibm -o:utf16

CCS自体を切り替えるため、「/98」や「/IBM」を使用すると、基本的な文字集合はいわゆる旧JIS (JIS C 6226) になります。

対応する符号

  • シフトJIS
  • 一部のEUC-JP

シフトJISで使う

シフトJISの場合、概ね次のようなCCS名で登録されています。

  • 98外字(PC-9801) ‐ /98 または /NEC
  • 98外字(EPSON-PC) ‐ /EPSON
  • IBM PC DOS外字 ‐ /IBM
  • Windows-31J相当 ‐ /WIN

例えば、SJIS/98 などとすれば、通常のシフトJIS符号の仕様に、98の文字集合を割り当てます。

EUC-JPで使う

EUC-JPの場合、次の3種類を用意しています。

  • EUC-JP系(通常の仕様)
    • ○ NEC特殊文字
    • ○ NEC選定IBM拡張文字
    • × IBM拡張文字
    • × ユーザー定義外字
  • Microsoft Windows Codepage : 51932
    • ○ NEC特殊文字
    • ○ NEC選定IBM拡張文字
    • × IBM拡張文字
    • × ユーザー定義外字
  • eucJP-open
    • ○ NEC特殊文字
    • ○ NEC選定IBM拡張文字
    • ○ IBM拡張文字
    • ○ ユーザー定義外字

通常の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の空き領域に配置されます。

ご利用の際はご注意下さい。

戻る
Copyright © Mirai Corporation 2007-2010 All rights reserved.