2011-01-20 27 views
2

とAndroid上で間違ってデコードされている私は、AndroidでISO-8859-1エンコードされたウェブサイトをこすりするHtmlCleanerを使用しています。英語以外の文字はHtlmCleaner

Androidアプリにインポートする外部jarファイルにこれを実装しました。

Eclipseで単体テストを実行すると、ノルウェー語の文字(æ,ø,å)が正しく処理されますが(デバッガで確認できます)、Androidアプリではこれらの文字は逆の疑問符のように見えます。

Androidアプリにデバッガを接続すると、Eclipseのユニットテストを実行しているときと同じ場所にこれらの文字が正しくないことがわかります。Androidでの表示/レンダリング/表示の問題ではありませんアプリ。

私はこれらの結果を得るデバッガからテキストをコピー:

Javaプロセス(ユニットテスト)を:«Blårek»、«ベニー»

(エミュレータで)Androidのプロセス: «Bl rek»,«ベニー»

これらのSt Androidの逆さまの疑問符で「å」がどのように再現されているかに注目してください。

htmlCleaner.getProperties().setRecognizeUnicodeChars(true)私は幸運なことなしに実行しようとしました。また、HTMLクリーナーでUTF-8またはISO-8859-1エンコーディングを強制する方法も見つけられませんでしたが、違いがあるかどうかはわかりません。ここで

は私が実行コードは次のとおりです。

HtmlCleaner htmlCleaner = new HtmlCleaner(); 

// connect to url and get root TagNode from HtmlCleaner 
InputSteram is = new URL(url).openConnection().getInputStream(); 
TagNode rootNode = htmlCleaner.clean(is); 

// navigate through some TagNodes, getting the ContentNode 
ContentNode cn = rootNode... 

// This String contains the incorrectly decoded characters on Android. 
// Good in Oracle JVM though.. 
String value = cn.toString().trim(); 

誰もがデコードbehavoirは、Android上で異なることが原因となるものを知っていますか?私は、2つの環境の主な違いは、私のユニットテストでSun/Oracleのスタックを使用している間に、AndroidアプリケーションがAndroidのjava.ioスタックを使用していることです。

おかげで、
ゲイル

答えて

0

HtmlCleaner使用するかをエンコーディング伝えることはできません。 InputStreamで応答の本文のみを渡していますが、エンコーディングは "content-type"ヘッダーにあります。

HtmlCleanerのプロパティで、HTTP接続からの正しいエンコーディングには、を指定できます。しかし、それはあなたがコンテンツタイプのヘッダーから正しいパラメータを解析する必要があります。あるいは、pass a URL instance to HtmlCleanerを使用して接続を管理することもできます。次に、適切にデコードするために必要なすべての情報にアクセスできるようになります。

関連する問題