例えば、以下のような変換をする場合に発生します。
U90からシフトJISへ変換する場合
JEFからシフトJISへ変換する場合
JIPSからシフトJISへ変換する場合
JEFからS90へ変換する場合
JIPSからS90へ変換する場合
変換先のコード系が旧字体を持っていないためです。
旧字体を変換する為には、以下の方法があります。
外字に文字を登録する
旧字体を外字に登録し、対応定義をしてください。
縮退変換を行う
旧字体を対応する新字体に対応させて変換します。なお、縮退変換では旧字体と新字体の相互変換になります。
なお、Charset Managerでは、縮退変換を行う制御文を以下のとおり提供しています。
縮退変換する対応定義ファイル名 | 変換対応定義が結ばれる文字 |
---|---|
S_JEFAMS.CTL | JEF<字形重視>の旧字体とSJISMSの新字体 |
S_JEFCMS.CTL | JEF<領域重視>の新字体とSJISMSの新字体 |
S_JefUCS2.ctl | JEF<字形重視>の旧字体とUnicodeの新字体 |
S_U90MS.CTL | U90の旧字体とSJISMSの新字体 |
S_JIPSAMS.CTL | JIPS<字形重視>の旧字体とSJISMSの新字体 |
S_JIPSCMS.CTL | JIPS<領域重視>の新字体とSJISMSの新字体 |
S_JefAS90.CTL | JEF<字形重視>の旧字体とS90の新字体 |
S_JefCS90.CTL | JEF<領域重視>の新字体とS90の新字体 |
S_JIPSAS90.CTL | JIPS<字形重視>の旧字体とS90の新字体 |
S_JIPSCS90.CTL | JIPS<領域重視>の新字体とS90の新字体 |
参照
製品が提供する対応定義ファイルについては、以下を参照してください。
“Charset Manager 使用手引書 標準コード変換機能編”の“5.3 制御文の形式”の“表5.1:対応定義ファイル”
EBCDICコードとISOコード間の双方向の変換では、EBCDIC(ASCII)コードとASCIIコード以外の組み合わせの変換で、必ず代替文字への変換が発生するか、または変換できない文字があります。したがって、すべての文字で文字種が同一になるEBCDIC(ASCII)コードとASCIIコードの変換規則を基本にしています。
EBCDICコード(カナ)とJIS8コード間の変換の場合は以下の通りです。
JISカタカナの範囲および以下の文字では同一文字になるようにする
ASCII | EBCDIC | ||
---|---|---|---|
0x24($) | ⇔ | カナ | 0xe0($) |
⇔ | ASCII | 0x5b($) | |
0x5c(\) | ⇔ | カナ | 0x5b(\) |
⇔ | ASCII | 0xe0(\) |
英小文字は変換しない(JIS8→EBCDIC(カナ)の方向のみ)
それ以外はEBCDIC(ASCII)コードとASCIIコードの変換規則に合わせる
参照
代替文字に変換される文字については、以下を参照してください。
“Charset Manager 使用手引書 標準コード変換機能編”の“付録F EBCDIC(カナ)の代替文字変換”
以下の機能を利用して、同じ文字に変換することができます。
iconv_ext関数
変換拡張定義(V9.2.0から)
参照
“Charset Manager 使用手引書 標準コード変換機能編”の“6.3.1 iconv_ext”、“付録K 変換拡張定義”
「髙」(FBFC)はIBM拡張文字であり、JISコード系に存在しないためです。
以下の機能を利用して、変換することができます。
iconv_ext関数
変換拡張定義(V9.2.0から)
参照
“Charset Manager 使用手引書 標準コード変換機能編”の“6.3.1 iconv_ext”、“付録K 変換拡張定義”
標準コード変換以外のコード変換(例えば、Java内部の変換)が動作している可能性があります。
標準コード変換以外のコード変換が動作していないか、確認してください。
変換できない2バイトの文字が、1バイトのアンダースコアに変換されるのは仕様です。ただし、Unicodeおよび他社ホストコード系の変換では、2バイトのアンダースコアに変換されます。
変換拡張定義機能を利用することで、標準コード変換ユーティリティ、iconvコマンド、標準コード変換関数のどれでも、代替文字を1バイトまたは2バイトの任意の文字に変更することが可能です。
参照
“Charset Manager 使用手引書 標準コード変換機能編”の“付録K 変換拡張定義”
文字コード対応の定義がエラーになっている可能性があります。
例えば、制御文で同じコードに対して定義を行なった場合、以下のようなエラーになります。
JOD373I-U ALREADY DEFINED CORRESPONDENCE
以下の対処を行なってください。
Windowsの場合
外字域対応表示を行ない、変換できない文字コードの定義が存在するか確認します。
定義が無い場合は、再度、外字域対応定義を行ない、画面に表示される処理結果の最後に、以下のメッセージが表示されているかどうか確認します。
JOD303I-I OUTPUT CHARACTER CORRESPONDENCE TABLE.
Solaris/Linuxの場合
qgfcsttbコマンドで文字コード変換表を表示し、変換できない文字コードの定義が存在するか確認します。
定義が無い場合は、再度、qgfcsttbコマンドで文字コードの対応関係を定義し、画面に表示される処理結果の最後に、以下のメッセージが表示されているかどうか確認します。
JOD303I-I OUTPUT CHARACTER CORRESPONDENCE TABLE.
上記メッセージが出力されていない場合は、エラーが発生しているのでエラーメッセージに従った対処を行ってください。