6
respostas

Problemas de configuração com UFT-8

Boa noite estou tendo problemas de configuração UFT-8 nos dados e praticamente todos os cursos aqui, como faço para acertar essa configuração. Por exemplo ao gravar um livro fictício pelo formulário foi impresso no console como abaixo: Gravando livro O mundo Java ao alcance das mãos No banco aparece da mesma forma, como posso resolver essa configuração?

6 respostas

Oi Luis, não é apenas uma questão de inverter as letras aí?

O correto é UTF-8. Vem de UCS Transformation Format—8-bit

Luis, tente realizar as seguintes alterações nas suas páginas xhtml: Em primeiro, no lugar de

<?xml version='1.0' encoding='UTF-8' ?>

coloque

<?xml version='1.0' encoding='ISO-8859-1' ?>

Caso isso não resolva, adicione essa tag jsf abaixo:

<f:view contentType="text/html; charset=ISO-8859-1">

Caso isso também não resolva, experimente colocar essa instrução no componente form:

<h:form id="form" acceptcharset="ISO-8859-1">

Um exemplo:

<?xml version='1.0' encoding='ISO-8859-1' ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">

    <f:view contentType="text/html; charset=ISO-8859-1">
        <h:head>
            <title>Facelet Title</title>
        </h:head>

        <h:body>
            <h:form id="form" acceptcharset="ISO-8859-1">
                <h:outputText value="João" />
                <h:inputText />
            </h:form>
        </h:body>
    </f:view>
</html>

Uma outra forma seria implementar um filtro na aplicação, responsável por processar todas as requisições, assim:

@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        request.setCharacterEncoding("ISO-8859-1");
        chain.doFilter(request, response);
    }

    // ...
}

Espero ter ajudado ;)

Desculpa escrevi errado é UTF-8. Não tem uma maneira parecida com o php encoding e decoding para inserir e selecionar os dados. Estive lendo algo sobre Java Base64, tem algo a ver com isso? Qual seria a maneira mais correta a fazer com java? Abç!

Este dado errado esta aparecendo no console, na minha aplicação jsf os dados da página livro.xhtml aparece normal.

Luis,

Caso você esteja usando a IDE Eclipse, por padrão, a aplicação do tipo console não tem suporte a caracteres UNICODE.

Em aplicações do tipo JSF é possível criar uma TAG informando qual é o tipo de carácter que vai ser renderizado pelo navegador, nas aplicações console funciona de forma diferente.

Se o seu intuito for usar a aplicação console apenas para testes, ou seja, você não vai instalar isso para o usuário final, você pode alterar a configuração de console output da própria IDE Eclipse.

Para isso com o projeto do Eclipse aberto, vá em configurações, selecione a aba common e altere na TAB Console Encoding de Default para UTF-8.

Lembre-se essa alteração é local e caso você envie um instalador para o usuário, a menos que o console da máquina do usuário já esteja configurado pra receber UNICODE não vai funcionar, sendo necessário você buscar na internet como alterar o Encoding do OUT ( que é o System.OUT.println ) para usar UNICODE.

Agora normalmente em aplicações do tipo console, o pessoal costuma tratar pra não exibir e nem receber caracteres especiais mesmo viu, deixando tudo padrão, exemplo ao invês de "você" ficaria "voce".

Espero ter ajudado.

Obrigado vou testar e te falo, abraço!