SAXParser - Utilizar o encoding definido no arquivo xml

Bom dia a todos!

Eu estou aprendendo a programar em Java para o Android e estou trabalhando em um código de um Leitor RSS. Eu sou programador e trabalho com C/C++ mas não conheço Java (apesar de sua proximidade com C++).
Essa minha questão imagino que não seja tão básica assim mas como não tenho certeza vou postar aqui mesmo. Se estiver no local errado, favor moverem para o local apropriado!

Todo o problema está na interpretação do encoding do arquivo xml. Apesar de especificado, parece que é ignorado!
Eu já fiz várias tentativas, muitos testes com soluções de problemas similares que encontrei na internet mas nada resolveu. Talvez seja algo bem simples mas não tenho mais idéias sobre o que fazer…

Durante minhas pesquisas para tentar resolver o problema eu descobri que o parser do SAX apenas aceita o encoding de um byte stream, ignorando de character streams. Assim segue o código:

	public List<Article> getLatestArticles(String feedUrl) {
		URL url = null;
		try {

			SAXParserFactory spf = SAXParserFactory.newInstance();
			SAXParser sp = spf.newSAXParser();
			XMLReader xr = sp.getXMLReader();

			url = new URL(feedUrl);
			
			URLConnection conn = url.openConnection();
			InputStream stream = conn.getInputStream();
			String ContentEncoding = conn.getContentEncoding();
			if("gzip".equals(conn.getContentEncoding())) {
				stream = new GZIPInputStream(stream);
			}

			InputSource source = new InputSource(stream);

			InputStream ByteStream = source.getByteStream();
			Reader CharStream = source.getCharacterStream();

			String encoding = source.getEncoding();
///			source.setEncoding("ISO-8859-1");

			xr.setContentHandler(this);
			xr.parse(source);


		} catch (IOException e) {
			Log.e("RSS Handler IO", e.getMessage() + " >> " + e.toString());
		} catch (SAXException e) {
			Log.e("RSS Handler SAX", e.toString());
		} catch (ParserConfigurationException e) {
			Log.e("RSS Handler Parser Config", e.toString());
		}
		
		return articleList;
	}

Resultado deste código:

ContentEncoding = null
ByteStream é válido
CharacterStream = null
encoding = null

Conforme pode ser visto, parece que o InputSource está utilizando um byte stream mas mesmo assim o encoding retornado é sempre nulo. Se eu forço o encoding pelo setEncoding, o programa funciona corretamente.

Dois exemplos de xml que estou tentando interpretar são:

( ISO-8859-1 ) - http://www1.caixa.gov.br/rss/asp/geraXML_rss_loterias.asp?canal=MEGASENA
( UTF-8 ) - http://www.hardware.com.br/feeds/global.xml

Obs: Ambos arquivos xml retornam encoding = null

Obrigado desde já!

Abraços,
Marcelo Utikawa da Fonseca

Olá!

Ninguém tem uma idéia de o que pode ser?

Se ajudar, este código está disponível no github: https://github.com/utikawa/AndroidRssReader.git

Abraços,
Marcelo Utikawa da Fonseca