2011-12-23 15 views
1

Java HtmlUnitを使用してサンプリングされたデータを扱っています。 WebページはWindows-1252エンコーディングを使用しましたが、ページがUTF-8としてエンコードされているかのようにレスポンスが取得されました(つまり、HtmlUnit WebResponseオブジェクトのgetContentAsStringが呼び出されたとき、サーバーで指定されたエンコーディングに遅延するのではなくUTF-応答)。誤ってラベル付けされたUTF-8文字データから元のWindows-1252データを再構築するために、このプロセスを逆にする方法はありますか?データからのWindows-1252文字をUTF-8として間違って保存しました

このトピックの他のほとんどの質問は、最初に正しくエンコードされた文字のファイルの種類の特定、またはあるストリームタイプから別のストリームタイプへの変換に関するものです。それはここでは当てはまりません。私はiconvのようなユーティリティが動作するとは思っていません。なぜなら、ストリームがソースコードで正しく持続されていると期待しているからです。

答えて

3

おそらくそうではありません。 Windows-1252でエンコードされたテキストがUTF-8であると誤解された場合、UTF-8がこれらのコードポイントを処理する方法のために、非ASCIIコードポイントがすべて破損します。非常に幸運なことに、すべての非ASCIIコードポイントがペアまたはトリプレットになって純粋なチャンスで実際のUnicodeコードポイントに変換される場合にのみ、プロセスを元に戻すことができます。

しかし、あなたはかなり運が良かったです。

+1

これは、損傷したコードポイントがどのように格納されるかによって異なります。私はHtmlUnitに関する経験はありませんが、不可能であると結論づける前に、結果のヘキサ・ダンプを見たいと思います。 –

+0

不可能ではないかもしれません。 *(仮定した)* utf-8のデコードを担当するエンティティが気まぐれな場合、utf-8コードポイントはバイナリ形式で「現状のまま」保たれるかもしれませんが、それは非常に悪いデコーダになります。私の推測では、結果はボックスや疑問符でいっぱいです... –

+0

HtmlUnitはJavaのエンコーディングを使用し、独自のものは何もしません(icu4jとは異なります)。したがって、文字セットのマングリングは、Javaのrtライブラリの悪意に依存します。もし誰かがその情報を与えられればそれ以上の提案があればそれは大いに感謝するでしょう。 – benmac

関連する問題