2017-12-13 154 views
0

2つの異なるiSeriesサーバーでxmlを生成しようとしています。両方のサーバーが同じCCSIDを持っています。しかし、xmlがフレームになると、 '@'文字は他の文字に変換されます。他のサーバーでは、正しく表示されています。両方のサーバーが同じPTFレベルにあり、Javaバージョンであっても両方のサーバーで同じです。 サーバーの違いは何ですか?違いをどうやって確認できますか? '@'が他の文字に変換される理由は、1つのサーバーでのみですか?'@'は2つの異なるibmサーバー(AS400)で異なって表示されます

+0

コードを表示します。あなたはたぶん 'File'に直接書きます。 –

答えて

3

これはCCSIDの問題のようです。

TL; DR
CCSIDは、IBM iの上の複数の場所に保存され、データがどこから来ているに依存している、あなたがチェックする桁数を持つことができます。

システム値からQCCSIDは、システムのデフォルトCCSIDですが、それだけでそうそう、彼らは同じである必要がありますが、それは全体の話ではない、特定の状況下で戦場に出ます。長い間の周りされている多くのシステムがQCCSIDは65535に設定されていることに注意してください

ジョブのCCSID - 各ジョブはそれが自分のCCSIDです持っているシステムCCSIDデフォルトが、ユーザープロファイルやSBMJOBにより変更することができますコマンド。しかし、それは仕事におけるCCSIDの全話ではありません。ジョブCCSIDが65535の場合、ジョブのデフォルトCCSIDはLANGIDに基づいて設定されます。私のシステムではLANGIDはENU、ジョブのデフォルトCCSIDは37です。

データベース - 各データベーステーブルには、CCSIDが指定されています。 CRTPFコマンドで指定されたDDSの場合、SQLの場合、ジョブのデフォルトCCSIDが使用されます。さらに、各文字データ列は、それ自身のCCSIDを指定することができます。

デバイスファイル - デバイスファイルはデータベースファイルと同様に、ファイルレベルとフィールドレベルの両方で独自のCCSIDを指定できます。

@文字は不変文字セットの一部ではないため、特にCCSID 65535が混在している場合は別のCCSIDで表示される可能性があります。 65535は変換なしを意味します。あなたは、CCSIDが全面的に同じであることを確認する必要があり、そこに65535がある場合、それらはすべて互いに一致しています。

最終メモはCCSID 65535です。これは、システム上に1つの言語しか存在しなかった日からのホールドオーバーです。当時、システムを使用しているすべての人が同じ言語を話していたので、キャラクタセットの非変換には問題はありませんでした。今日のシステムはすべての方法で接続され、データはPCやWebと共有されるため、CCSIDは大きな問題になります。なぜなら、システム上の全員が同じ言語を話していても、PC、IFS、XML 、Unicodeなどがあります。おそらく、システムのCCSIDを65535以外の値に設定するのが最善です。

+0

ありがとうございました。私は両方のサーバー(問題とサーバーが正常に動作しているサーバー)でCCSIDを確認しました。どちらのサーバーも、同じccsidシステムとccsidジョブを持っています。私たちはxmlを生成するためにjavaにdataqを送ります。 Qsnddtaq(ここからはdataqをJavaに送信する)まで、「@」記号が正しく表示されています。 XML(Javaプログラムから生成されたもの)の中でのみ、 '§'に変更されています。これはAS400やJavaからの問題ですか? – Susmitha

関連する問題