Scanner(File) problemas com acentuacao

3 respostas
M

Meu programa le um arquivo txt, e grava em uma lista todas as palavras separadas, e grava a frequencia com que elas ocorrem. O problema é que quando o arquivo tem alguma palavra com acentuação, qualquer que seja, o programa não le nada do texto, não importa se seja apenas uma palavra no final do texto, ou varias palavras em varias partes do texto, ele não le nada.

aqui a parte do meu codigo que le o arquivo

input = new Scanner(file);  
  while(input.hasNext()){  
    palavra = input.next();  
    list.insert(palavra);  
  }

O estranho, é que em textos sem acentuação o programa funciona perfeitamente.

3 Respostas

davidbuzatto

Oi Maurício,

Acredito que seu problema esteja relacionado a forma que você está usando o Scanner.
Quando vc pergunta "has next?" e pega o "next", vc está pegando um token do Scanner baseado no delimitador padrão do Scanner, que por sua vez, deve estar atrapalhando o recorte.

Tente pegar linha a linha, e então recortar cada linha nos espaços.
Algo assim:

input = new Scanner(file);

// tem mais linhas?
while(input.hasNextLine()){  

    // sim, tem mais linhas...
    // pega a linha, recorta nos espaços (\s), gerando um array (segundo argumento do for each)
    // e itera por esse array, colocando cada token na String palavra
    for ( String palavra : input.nextLine().split( "\s" ) ) {
        list.insert(palavra);
    }

}
bruno_rg

Você já tentou passar o charset do arquivo de texto que contém a acentuação como parâmetro para o Scanner?

Scanner input = new Scanner(new FileInputStream("teste.txt"), "latin1");
M


Você já tentou passar o charset do arquivo de texto que contém a acentuação como parâmetro para o Scanner?

view plaincopy to clipboardprint?
Scanner input = new Scanner(new FileInputStream(“teste.txt”), “latin1”);


nao tinha tentado nao, mas funcionou
valeu cara, problema resolvido.

Criado 18 de julho de 2010
Ultima resposta 19 de jul. de 2010
Respostas 3
Participantes 3