3
respostas

[Dúvida] erro com US_ASCCI

no meu codigo retornou um UnsupportedEncondingException: US_ASCII

como faço para tratar esse erro, já coloquei o throws UEE mas ainda persiste, no exercicio informa que era esperado esse erro

public static void main(String[] args) throws UnsupportedEncodingException {        

        String s = "C";
        System.out.println(s.codePointAt(0));

        Charset charset = Charset.defaultCharset();
        System.out.println(charset.displayName());

        byte[] bytes = s.getBytes("windows-1252");
        System.out.print(bytes.length + ", windows-1252, ");
        String sNovo = new String(bytes, "windows-1252");
        System.out.println(sNovo);

        bytes = s.getBytes("UTF-16");
        System.out.print(bytes.length + ", UTF-16, ");
        sNovo = new String(bytes,"UTF-16");
        System.out.println(sNovo);

        bytes = s.getBytes(StandardCharsets.US_ASCII);
        System.out.print(bytes.length + ", US_ASCII");
        sNovo = new String(bytes, "US_ASCCI");
        System.out.println(sNovo);
    }
}
3 respostas

Oi Jefferson, tudo bem?

Pelo que entendi, é na saída do seu código que apareceu isso, certo? Se tiver aparecido, é porque a codificação realmente não é suportada pelo seu sistema, e ele não consegue imprimir, lançando uma exceção. Quando você usa o throws UnsupportedEncodingException, você está apenas avisando ao compilador que aquele método que a exceção pode ser lançada e você está consciente disso. Nesse caso, para tratar a exceção, você pode usar um try-catch:

public static void main(String[] args) {

    String s = "C";
    System.out.println(s.codePointAt(0));

    Charset charset = Charset.defaultCharset();
    System.out.println(charset.displayName());

    try {
        byte[] bytes = s.getBytes("windows-1252");
        System.out.print(bytes.length + ", windows-1252, ");
        String sNovo = new String(bytes, "windows-1252");
        System.out.println(sNovo);

        bytes = s.getBytes("UTF-16");
        System.out.print(bytes.length + ", UTF-16, ");
        sNovo = new String(bytes,"UTF-16");
        System.out.println(sNovo);

        bytes = s.getBytes(StandardCharsets.US_ASCII);
        System.out.print(bytes.length + ", US_ASCII");
        sNovo = new String(bytes, StandardCharsets.US_ASCII);
        System.out.println(sNovo);
    } catch (UnsupportedEncodingException uee){
        System.out.println("Impossível utilizar codificação!");
    }

}

Só mais uma coisinha: minha IDE não estava reconhecendo o último US_ASCII, então usei o StandardCharsets. Além disso, tinha um errinho de digitação que poderia estar te atrapalhando: tava ASCCI, ao invés de ASCII. Tenta mudar e vê se ele roda sem a exception.

Qualquer coisa, estou à disposição! Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Boa noite Iasmin

Fiz a correção do erro de digitação e sem o exception tambem não rodou talvez minha IDE não reconheça tambem, mas utilizando o try catch o erro foi tratado, me esqueci desse detalhe do try/catch

Obrigado!

Fico feliz que tenha dado certo, Jefferson! Não se esquece de marcar o tópico como solucionado :)