0

元のコードが何なのか分からないので、元のコードはIBM850かISO8859-1だと思います。

  1. IBM850 -> UTF8
    これで OK の場合、元のコードは IBM850 であると考えます。OK の場合は、次の手順を実行します。

  2. ISO8859-1 -> UTF8
    これでよければ元のコードは UTF8 だと思います。

ただし、元のコードが ISO8859-1 の場合、IBM850 に認識されてしまうという問題があります。元のコードが IBM850 の場合、ISO8859-1 に認識されます。

IBM850 と ISO8859-1 には共通点があるようです。

誰が私を助けてくれますか、ありがとう。

4

1 に答える 1

0

はい、変換が失敗したか成功したかをテストすることによって、最も単純な種類の自動検出のみが可能です。(ほとんど)すべての入力が有効な入力エンコーディングでは機能しません。

IBM850からまたは から翻訳した後にそれがより意味があるかどうかをテストするために、可能性のある出力についてもっと知っておく必要がありますISO8859-1。それが何encalibencaするかです。おそらく、チェックするいくつかの簡単な期待から始めることができます。

  1. あなたのソースはたまたまASCII両方のエンコーディングのサブセット内にありますか? その後、変換に満足しています (ただし、元のエンコーディングを知る方法はまったくありません)。
  2. コードでボックス描画文字を使用していますか? そうでない場合、一部の候補を簡単に却下できIBM850ます。
  3. あなたのコードは の制御文字を使用していますISO8859-1か? そうでないISO8859-1場合、コードポイントが使用されているかどうかのいくつかの候補を拒否するのは簡単です。0x800x9F
  4. 非 ASCII であるコードのフラグメントは、常に自然言語のテキストを表していますか? 次に、文字とそのペアの頻度表を使用して、これらの基準で結果を自然言語に近づけるソース エンコーディングを選択できます。(両方のバリアントがほぼ同等に受け入れられる場合は、エラー メッセージを表示して、最終的な決定を人間に任せた方がよいでしょう)。
于 2013-01-31T07:04:38.767 に答える