ユーザーがコンテンツをアップロードして処理できるようにするWebアプリケーションがあります。処理エンジンはUTF8を想定しているため(複数のユーザーのファイルからXMLを作成しています)、アップロードされたファイルを適切にデコードできることを確認する必要があります。
私のユーザーの誰かが自分のファイルがエンコードされていることさえ知っていたら驚いたので、使用するエンコード(デコーダー)を正しく指定できることを期待することはほとんどありません。そのため、私のアプリケーションには、デコードする前に検出するタスクが残されています。
これはそのような普遍的な問題のように思えます。フレームワーク機能もソリューションの一般的なレシピも見つからないことに驚いています。意味のある検索用語で検索していないのでしょうか?
BOM対応の検出(http://en.wikipedia.org/wiki/Byte_order_mark)を実装しましたが、エンコードを示すためにBOMを使用してファイルがアップロードされる頻度がわかりません。これは、ほとんどの非UTFファイル。
私の質問は要約すると次のようになります。
- 大多数のファイルに対してBOM対応の検出で十分ですか?
- BOM検出が失敗した場合、別のデコーダーを試して、それらが「有効」であるかどうかを判断することは可能ですか?(私の試みは答えが「いいえ」であることを示しています。)
- 「有効な」ファイルがC#エンコーダー/デコーダーフレームワークで失敗するのはどのような状況ですか?
- テストに使用するさまざまなエンコーディングのファイルが多数あるリポジトリはどこにありますか?
- 特にC#/。NETについて質問していますが、次回これを行う必要がある場合に備えて、Java、Python、およびその他の言語の答えを知りたいと思います。
これまでのところ私は見つけました:
Ctrl-S文字を含む「有効な」UTF-16ファイルにより、UTF-8へのエンコードで例外(不正な文字?)がスローされました(これはXMLエンコードの例外でした)。- 有効なUTF-16ファイルをUTF-8でデコードすると成功しますが、ヌル文字のテキストが返されます。は?
- 現在、UTF-8、UTF-16、およびおそらくISO-8859-1ファイルのみを期待していますが、可能であればソリューションを拡張できるようにしたいと考えています。
- 私の既存の入力ファイルのセットは、ライブファイルで発生するすべての問題を明らかにするのに十分な広さではありません。
- 私がデコードしようとしているファイルは「テキスト」ですが、ファイルにガベージ文字を残すメソッドを使用して作成されることが多いと思います。したがって、「有効な」ファイルは「純粋」ではない可能性があります。ああ、喜び。
ありがとう。