JEFの'A1A1'はJEFのコード範囲外のためEILSEQが発生します。
コード範囲外のコードは、文字コード変換表のカスタマイズ機能を使用しても変換できません。
文字コード変換表をカスタマイズする必要があります。
製品で提供する、JEFの拡張文字とUnicodeの外字域を対応定義する対応定義ファイル(JEF2FUNI.CTL)を利用して、対応定義を行ってください。なお、この対応定義ファイルを利用すると標準の対応関係と変わる文字があります。詳しくは、“3.3.1.5 【TRICV00020】JEFの文字を変換するため、JEF2FUNI.CTLを定義しました。定義を行ったところ、2対1変換を行うようになった文字があります。”を参照してください。
参照
製品が提供する対応定義ファイルについては、以下を参照してください。
“Charset Manager 使用手引書 標準コード変換機能編”の“5.3 制御文の形式”の“表5.1:対応定義ファイル”
なお、JEFの文字を表示、印刷したい場合には、JEF拡張漢字サポートをインストールする必要があります。Unicode-JEF明朝フォント、およびUnicode-JEFゴシックフォントを利用することでそのまま表示、印刷することができます。MS明朝などの別のフォントでJEFの文字を表示、印刷したい場合、外字に移入する必要があります。
JEFコードのほうが、SJISMSよりも文字数が多いため、すべての文字をSJISMSへ変換する事はできません。
SJISMSへ変換できない文字は外字登録し対応定義する必要があります。ただし、SJISMSの外字領域より変換できない文字のほうが多いため、すべての文字を登録する事はできません。文字を選定し外字登録を行ってください。
参照
対応定義については、以下を参照してください。
“Charset Manager 使用手引書 標準コード変換機能編”の“第5章 文字コード変換表のカスタマイズ”
シフト状態が2バイトの場合、領域外の文字と判断するためです。
シフト状態が1バイトの場合、変換されます。(0xFFも変換されます。)
この文字は制御文の定義前は、文字の流通を考え、変換できるようにしています。
UNIJEFと変換する際にはUNIJEFの文字により字体の近い文字があるので、その文字との対応を追加し相互変換を行うため、2対1変換となります。
このような文字は以下の7文字です。(2対1変換となる文字)
参考
JEF2FUNI.CTLを定義すると、以下の文字は対応関係が変わります。
JEF2FUNI.CTLから2対1変換となる文字の対応定義を削除すると、標準対応になります。
JEF2FUNI.CTL と S_JEFAMS.CTL の対応定義がリンクされているためです。
JEF2FUNI.CTLでは“JEFの旧字体や拡張文字”と“Unicodeの外字域”との対応が定義され、S_JEFAMS.CTLでは“JEFの旧字体”と“SJISMSの新字体”との対応が定義されます。したがって、SJISMSの新字体とUnicodeの外字域も、自動的に対応定義されます。
参照
対応定義については、以下を参照してください。
“Charset Manager 使用手引書 標準コード変換機能編”の“5.3.1 DEFCDPR制御文”
JEF2FUNI.CTL と S_JEFAMS.CTL の対応定義により、自動的に定義されるSJISMSとUnicodeの対応関係が問題となる場合は、どちらかの対応定義を削除してください 。
JEFとUnicodeの変換では、JEFとSJISの変換よりも字形を厳密に比較し、違う文字であると判断したコードについては変換を行わないようにしています。詳しくは、“Charset Manager 使用手引書 標準コード変換機能編”の“A.4 JEFとUnicodeの変換対応について”を参照してください。
JEFとUnicodeの間で文字コード変換表のカスタマイズを行ってください。
例
SJISのfa9c「塚」をJEFのc4cdに変換したい場合
SJIS→JEF:fa9c→c4cd
SJIS→Unicode→JEF:fa9c→fa10→×
このため、以下の対応定義を行うことで変換可能となります。
Unicode→JEF:fa10→c4cd
JIS→JEFの変換では、83JIS改定文字は以下のように変換されます。
字形重視 | 領域重視 | |
---|---|---|
JIS改定文字 その1 | 新字体 | 旧字体 |
JIS改定文字 その2 | 旧字体 | 旧字体 |
「JIS改定文字 その2」は、字形重視でも領域重視でも旧字体に変換されます。
参照
JIS改定文字の内容については、マニュアルを参照してください。
“Charset Manager 使用手引書 標準コード変換機能編”の“A.2 縮退文字一覧”
字形重視で、「JIS改定文字 その2」を新字体に変換したい場合、以下のどちらかの対処を行ってください。
SJISMSを経由して変換を行う。(JIS→SJISMS→JEF)
iconv_ext関数で、「JIS改定文字 その2」をJEFの新字体に変換するように定義する 。
変換拡張定義で、「JIS改定文字 その2」をJEFの新字体に変換するように定義する。(V9.2.0から)
仕様です。
JEFのシフトコード(0x28、0x29、0x38)やEBCDICの制御コード(0x30)を、変換拡張定義の変換元コードに指定しても、その定義は無効となります 。
ありません。