1

encoding="IBM1047" として宣言されている XML ファイルがたくさんありますが、次のようには見えません。

  • iconv を使用して IBM1047 から UTF-8 または ISO8859-1 (Latin 1) に変換すると、判読できないゴミになります。
  • file -i <name_of_file> は「不明な 8 ビット エンコーディング」と表示されます
  • XML パーサーによって解析されると、パーサーはプロローグの前にテキストがあると不平を言いますが、ありません。XML宣言のエンコーディングを別のものに変更すると、このエラーは発生しません

これらのファイルの実際のエンコーディングを調べるとよいでしょう (前述の「file -i」と「enca」を試しましたが、スラブ言語に限定されています (ファイルはフランス語です))。

これらのファイルがどのように生成されるかについては、ほとんど制御できません。実際のエンコーディングを見つけることはできませんが、ファイルが実際には IBM1047 ではないことを決定的に証明できれば、プロデューサーに何かしてもらうことができます。

どうやって証明するの?

いくつかの特殊文字:

  • 「é」は「©」
  • 「ア」は「エ」
  • 「è」は「Û」です
  • 「ê」は「ª」です
4

1 に答える 1

0

データストリームのクラスが特定の方法でエンコードされているかどうかを証明する唯一の方法は、クラスの少なくとも1つのインスタンスについて、ストリームに含まれるはずの文字を正確に知ることです。特定のテストケースでの(想定される)文字について合意している場合は、テストケースのIBM 1047(またはその他の)エンコーディングに含まれるべきビットを計算し、それらのビットをビットと比較できます。あなたは実際に見ます。

もちろん、EBCDICデータをマングルする簡単な方法の1つは、他のEBCDICコードページ用に設計された変換テーブルを使用する方法で、EBCDIC/ASCIIゲートウェイを通過することです。ただし、EBCDICデータを使用している場合は、おそらくすでにそれを知っています。

于 2012-09-12T23:45:18.780 に答える