8
respostas

Problema com acentos

Deu tudo certo quando fui pesquisar por 'Drama' na hora de executar o código. Mas quando fui pesquisar por 'Comédia' deu este erro: java.lang.IllegalArgumentException: Nenhuma categoria encontrada para a string fornecida: Com´┐¢dia

Parece que o Scanner não aceita caracteres especiais. Como posso resolver isso?

8 respostas

Oi, tudo bem? Pesquisando aqui achei as seguintes recomendações

você incluiu a codificação de UTF-8 no Scanner?

Scanner scanner = new Scanner(System.in, "UTF-8");

No início do arquivo java inclua

// -- coding: utf-8 --

se a resposta te ajudar, favor marcar como solução

Pior que não resolveu. Declarei o scanner do jeito que sugeriu e coloquei "// -- coding: utf-8 --" na primeira linha do arquivo, mas continua dando o mesmo erro.

Minha função fromPortugues está dessa forma:

public static Categoria fromPortugues(String text) {
    for (Categoria categoria : Categoria.values()) {
        if (categoria.categoriaPortugues.equalsIgnoreCase(text)) {
            return categoria;
        }
    }
    throw new IllegalArgumentException("Nenhuma categoria encontrada para a string fornecida: " + text);
}

E minha classe que busca a série por categoria está dessa forma:

private void buscarSeriesPorCategoria() {
    System.out.println("Deseja buscar séries de que categoria/gênero? ");
    var nomeGenero = leitura.nextLine();
    Categoria categoria = Categoria.fromPortugues(nomeGenero);
    List<Serie> seriesPorCategoria = repositorio.findByGenero(categoria);
    System.out.println("Séries por categoria " + nomeGenero);
    seriesPorCategoria.forEach(System.out::println);
}

Pode ter alguma coisa errado nessas funções?

ao invés de usar leitura.nextLine() tente definir a categoria diretamente no código

Categoria categoria = Categoria.fromPortugues("Comédia");

Isso é um teste para ver se o problema está no código ou no console.

Se lendo assim, funcionar o problema pode ser no ambiente ou o console que não está lendo UTF-8

Fiz o teste diretamente no código como sugeriu e deu tudo certo, acho que o problema está no UTF-8.

Provavelmente o problema está no seu console ou ambiente e não no código.

digita chcp no console para ver o que retorna

deve retorna uma mensagem como Active code page: [uns números]

tem que ver se esses números tem suporte ao UTF-8. Se não tiver terá que mudar

aqui tem um material explicando https://learn.microsoft.com/pt-br/windows-server/administration/windows-commands/chcp

https://learn.microsoft.com/pt-br/windows/win32/intl/code-page-identifiers

Esse procedimento é no windows , este é seu ambiente?

se essa resposta te ajudar favor marcar como solução

Usei este comando e retornou código 850. Só não entendi o que devo fazer agora?

Boa noite, Guilherme.

Poderia informar a IDE que está utilizando? Testou em outras IDEs e/ou se possível em outro computador?

Estava tendo um problema parecido no Visual Studio Code, porém ao testar no IntelliJ, rodou tudo certinho.

Valeu!

Estou usando o VS Code

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software