さまざまな XML ファイルを解析する必要がある Android 用のアプリを開発しています。それらのほとんどは UTF-8 でエンコードされていますが、いくつかは ISO-8859-1 でエンコードされている場合があります。
HttpURLConnection con = (HttpURLConnection) url.openConnection();
...
in = con.getInputStream();
InputSource is = new InputSource(in);
...
parser.parse(is, handler);
入力を処理するための私のコードは上記のようになります。java
ドキュメントには、次のことが記載されていInputSource
ます。
文字ストリームは存在しないがバイト ストリームは存在する場合、パーサーはそのバイト ストリームを使用し、InputSource で指定されたエンコーディングを使用するか、(エンコーディングが指定されていない場合) のようなアルゴリズムを使用して文字エンコーディングを自動検出します。 XML 仕様。
を渡してByteStream
いますが、エンコーディングを指定していないため、ドキュメントによると、エンコーディングは自動検出されるはずです。しかし、そうではありません。UTF-8 でエンコードされたすべてのファイルは問題ありませんが、ISO-8859-1 のファイルはそうではありません ( Parser Expat... Exception for some invalid characters
. 手動でエンコーディングInputSource
を「ISO-8859-1」に設定すると、逆の動作になります。
どうすればこれを解決できますか? Google とStackoverflow
何時間も検索しましたが、解決策が見つかりませんでした。CharacterStream
にも aを渡そうとしましたInputSource
が、ISO-8859-1 ファイルの一部の文字(äöüÄÖÜß)
はまだ「?」として表示されます。私のアプリで。
前もって感謝します!