Por que meu código está lançando UnsupportedEncodingException?

UnsupportedEncodingException ocorre quando uma codificação de caracteres inválida ou não suportada é usada em Java.

Por que meu código está lançando UnsupportedEncodingException?

O erro UnsupportedEncodingException em Java ocorre quando tentamos utilizar uma codificação de caracteres não suportada pelo ambiente de execução. Esse problema acontece, geralmente, ao converter strings para bytes ou vice-versa usando uma codificação inválida ou incorreta.

Causas comuns do erro UnsupportedEncodingException

Passar um nome de codificação inválido ao converter uma string. O ambiente de execução não suporta a codificação especificada. Uso de caracteres especiais sem definir corretamente a codificação.

Exemplo de erro e solução

Código que gera o erro:

import java.io.UnsupportedEncodingException;

public class Exemplo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String texto = "Olá, mundo!";
        byte[] bytes = texto.getBytes("UTF-16XYZ"); // Codificação inválida
    }
}

O erro ocorre porque UTF-16XYZ não é uma codificação válida.

Correção:

import java.io.UnsupportedEncodingException;

public class Exemplo {
    public static void main(String[] args) {
        try {
            String texto = "Olá, mundo!";
            byte[] bytes = texto.getBytes("UTF-8"); // Codificação válida
        } catch (UnsupportedEncodingException e) {
            System.out.println("Erro: Codificação não suportada!" + e.getMessage());
        }
    }
}

A solução correta é garantir que a codificação informada seja válida e suportada pelo ambiente de execução.

Como evitar UnsupportedEncodingException?

Sempre utilize StandardCharsets.UTF_8 ao invés de passar strings manualmente. Evite codificações desconhecidas e prefira UTF-8, que é amplamente suportado. Trate exceções corretamente para evitar falhas inesperadas.

import java.nio.charset.StandardCharsets;

public class ExemploSeguro {
    public static void main(String[] args) {
        String texto = "Olá, mundo!";
        byte[] bytes = texto.getBytes(StandardCharsets.UTF_8);
        System.out.println("Texto convertido com sucesso!");
    }
}

Conclusão

O erro UnsupportedEncodingException pode ser evitado garantindo que a codificação de caracteres utilizada seja válida e amplamente suportada. Utilizar StandardCharsets.UTF_8 ao invés de strings manuais reduz o risco desse erro e melhora a compatibilidade do código.

UnsupportedEncodingException é um erro comum ao trabalhar com manipulação de strings e arquivos em Java. Ele ocorre quando tentamos converter texto para bytes ou vice-versa utilizando uma codificação inválida. Para evitar esse problema, sempre utilize StandardCharsets.UTF_8 e verifique a compatibilidade da codificação antes de aplicá-la.

Algumas aplicações:

  • Garantir compatibilidade de caracteres em diferentes sistemas
  • Evitar falhas ao converter strings para bytes
  • Melhorar a interoperabilidade de aplicações que lidam com diferentes encodings
  • Prevenir perda de dados ao manipular arquivos de texto

Dicas para quem está começando

  • Sempre utilize StandardCharsets.UTF_8 para evitar problemas
  • Evite hardcode de nomes de codificação como strings
  • Trate exceções para evitar falhas inesperadas
  • Verifique a documentação das APIs para suportar a codificação correta

Contribuições de Rodrigo Farias

Compartilhe este tutorial: Por que meu código está lançando UnsupportedEncodingException

Compartilhe este tutorial

Continue aprendendo:

Como corrigir ReentrantLock causando IllegalMonitorStateException

IllegalMonitorStateException ocorre ao usar ReentrantLock sem adquirir o bloqueio corretamente antes de chamar métodos de sincronização.

Tutorial anterior

Como corrigir o erro Missing return statement em Java

Missing return statement ocorre quando um método que deveria retornar um valor não garante a presença de um retorno válido em todos os caminhos de execução.

Próximo tutorial