ページの先頭行へ戻る
Interstage Charset ManagerStandard Edition V10 トラブルシューティング

3.3.3 その他のコードのトラブル

3.3.3.1 【TRICV00027】新字体と旧字体の両方をもっているコード系から新字体しか持っていないコード系へ変換を行うと、変換できない文字があります。

現象の補足事項

例えば、以下のような変換をする場合に発生します。

  • 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:対応定義ファイル”

3.3.3.2 【TRICV00028】EBCDIC(カナ)からASCII変換で「!」などが別の文字に変換されます。

原因

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 変換拡張定義”

3.3.3.3 【TRICV00029】SJISからJISに変換を行ったところ、SJISコードの「髙」(0xFBFC)がJISに変換できません。

原因

「髙」(FBFC)はIBM拡張文字であり、JISコード系に存在しないためです。

対処

以下の機能を利用して、変換することができます。

  • iconv_ext関数

  • 変換拡張定義(V9.2.0から)

参照

“Charset Manager 使用手引書 標準コード変換機能編”の“6.3.1 iconv_ext”、“付録K 変換拡張定義”

3.3.3.4 【TRICV00030】Javaのアプリケーションでコード変換をしていますが、コードの対応定義をしてあるのに"?"と表示されてしまいます。

原因

標準コード変換以外のコード変換(例えば、Java内部の変換)が動作している可能性があります。

対処

標準コード変換以外のコード変換が動作していないか、確認してください。

3.3.3.5 【TRICV00031】SJIS-EUC変換やJEF-SJIS変換などで、変換できない2バイトの文字が、1バイトの代替文字(アンダースコア)に変換されてしまいます。

原因

変換できない2バイトの文字が、1バイトのアンダースコアに変換されるのは仕様です。ただし、Unicodeおよび他社ホストコード系の変換では、2バイトのアンダースコアに変換されます。

対処

変換拡張定義機能を利用することで、標準コード変換ユーティリティ、iconvコマンド、標準コード変換関数のどれでも、代替文字を1バイトまたは2バイトの任意の文字に変更することが可能です。

参照

“Charset Manager 使用手引書 標準コード変換機能編”の“付録K 変換拡張定義”

3.3.3.6 【TRICV00032】文字コード変換表のカスタマイズで、文字コード対応を定義したが、定義したとおりに変換されません。

原因

文字コード対応の定義がエラーになっている可能性があります。

例えば、制御文で同じコードに対して定義を行なった場合、以下のようなエラーになります。

JOD373I-U ALREADY DEFINED CORRESPONDENCE
対処

以下の対処を行なってください。