Pessoal,
pesquisei aqui no fórum e não encontrei nada que resolvesse meu problema, então vamos lá:
preciso ler os dados de um arquivo txt, porém não sei a codificação que virá nesse arquivo, normalmente o arquivo feito por usuários windows lê UTF-8 normalmente, mas quando é UTF-16 não lê 
Preciso obter do arquivo a codificação original do mesmo para ler através do InputStream.
Então a dúvida é: como obter a codificação do arquivo?
Procurei no forum e na net e não encontrei nada 
Desde já agradeço a ajuda
Encoding arquivo txt
3 Respostas
A resposta simples é “depende”.
Pode ser que o arquivo txt tenha um BOM (Byte Order Mark), que é uma sequência de 2 ou 3 bytes que indicam qual é a codificação usada. Por exemplo, no caso do UTF-8 o BOM é EF BB BF , no caso do UTF16-BE, FE FF, e no caso do UTF16-LE, FF FE . Então você abre o arquivo com um FileInputStream normal, lê esses 2 ou 3 bytes, e verifica qual é o encoding.
http://unicode.org/faq/utf_bom.html#BOM
Pode ser que o arquivo NÃO tenha o BOM (e portanto é MAU - ha ha ha).
Se ele for “MAU”, então provavelmente ele é UTF-8 ou Windows-1252 se os 2 bytes iniciais não forem EF BB ou FE FF ou FF FE. Mas pode ser UTF16-BE se o primeiro byte for 00, e UTF16-LE se o segundo byte for 00.
Para saber se um arquivo é Windows-1252 ou UTF-8 já é um pouco mais complicado. Uma maneira simples é tentar efetuar o encoding usando UTF-8; se houver erros de encoding, então ele é provavelmente Windows-1252.
entanglement, obrigado pela ajuda 
mas ainda estou tendo problemas quando o arquivo não tem o BOM (quando ele eh ‘MAU’ :lol: ), ao efetuar o encoding usando UTF-8, ou outro, nenhuma exceção é lançada, somente os dados são lidos incorretamente, o que torna difícil saber se o encoding utilizado está incorreto 
Alguma solução pra este caso???
Desde já agradeço.
tem o jchadet … mas ele te traz uma lista de possiveis encoding que podem ser usados.
vale dar uma olhada … http://jchardet.sourceforge.net/