eucJP-ms
読み:イーユースィージェイピー-エムエス
外語:eucJP-ms

 EUC-JPの亜種の一つで、eucJP-openの亜種の一つ。
目次

概要
 Windows用シフトJISであるWindows-31J文字集合との相互変換を可能としたeucJP-openが、TOG日本ベンダ協議会(TOG/JVC)により策定された。
 eucJP-msは、Unicodeとの変換表を、WindowsのシフトJISであるCP932に合わせたものである。
 通常のEUC-JPには無い、Windows-31Jの拡張漢字や外字領域が用意されている。
 但し、Windows標準のEUC-JPは「Microsoft Windows Codepage : 51932」であり、eucJP-msは標準では対応していない。

仕様

基本仕様
 符号化方法(CES)の仕様はEUC-JPと全く同じである。文字集合(CCS)のみが違う。

拡張文字
 13区の「NEC特殊文字」は、そのまま採用されている。
 拡張漢字も用意されている。Windows-31Jでは89区〜92区と115区〜119区の両方で重複して割り当てられているが、eucJP-msでは後者を、G3の83区から84区に配列している。
 但し元の配列とは異なり、IBM拡張文字のうちでJIS X 0208、JIS X 0212に存在するものは除かれている。
 なお、13区と重複する記号は除外されていないため、拡張文字と13区の記号は13字が重複している。
 +0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F
8F F3F0   iiiiiiivvviviiviiiixxIII 
 +0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F
8F F4A0 IIIIVVVIVIIVIIIIXX(株)No.TEL
8F F4B0
8F F4C0
8F F4D0
8F F4E0
8F F4F0 

ユーザー定義外字領域
 WindowsのシフトJISに存在するユーザー定義外字領域が用意されている。
 EUCの文字集合(JIS X 0208)には本来存在しないユーザー定義外字だが、シフトJISには20区分(1880字)の領域が用意されている。
 eucJP-openでは、G1とG3の85区〜94区に各10区、合計20区を割り当てている。

重複定義の問題

重複する文字
 G3の83区〜84区にある「IBM拡張文字」のうち、ローマ数字10個と、(株)、No.、TEL、合計13文字については、13区の「NEC特殊文字」と重複している。
 また13区の「NEC特殊文字」は、前述の13文字のほかに、√⊥∠の9字がJIS X 0208の2区に対して重複となっている。
 更に、No.についてはJIS X 0212に対しても重複となっており、eucJP-msの中で3つが存在する。
 この場合、Unicodeとの相互変換で支障が発生するが、Windows-31Jと同様の変換をすることが求められる。

eucJP-ms→Unicode
 eucJP-ms→Unicodeの変換は、多対1の変換をする。
 Unicodeには、eucJP-msで重複する文字も1文字分しか用意されていないため、可能な範囲で変換するしかない。
 従って、Unicodeになった時点で、JIS X 0208/NEC特殊文字/IBM拡張文字のどれであったのか、という情報は失われる。

Unicode→eucJP-ms
 Unicode→eucJP-msの変換は、最大で3候補ある中からいずれかを選択することになる。
 Unicode→Windows-31Jの標準的な変換は次の通りとなっているため、これを準用するものとする。

Windows-31Jの考慮点
 Windows-31JとUnicodeの変換表は、通常想定されうるものと若干異なっているため、注意を要する。
 eucJP-msの変換と、既にOBSOLETE(破棄)扱いではあるがUnicodeコンソーシアムのJIS0208.TXTの変換、そしてJIS X 0208の文字名から対応づけられるUnicode文字との差異を、以下に示す。
文字eucJP-msJIS0208.TXTJIS X 0208
EUCUnicode
0xA1BDU+2015U+2015U+2014 EM DASH
0xA1C1U+FF5EU+301CU+301C WAVE DASH
0xA1C2U+2225U+2016U+2016 DOUBLE VERTICAL LINE
0xA1DDU+FF0DU+2212U+2212 MINUS SIGN
¢0xA1F1U+FFE0U+00A2U+00A2 CENT SIGN
£0xA1F2U+2225U+00A3U+00A3 POUND SIGN
¬0xA2CCU+FFE2U+00ACU+00AC NOT SIGN
 eucJP-msの変換はこのうちeucJP-ms欄にある変換先を使うことになるが、このために他の標準的な実装をしている(と思われる)処理系と互換性面で問題が発生する。

再検索