2
respostas

Spring MVC Apostrofe simples Erro decoding

Olá pessoal tudo bem?

Eu estou com um problema em um módulo que envia mensagens (chat) num sistema web que estou trabalhando.

os usuários enviam a seguinte mensagem por exemplo:

" Hi I'am interested!" essa ' eh convertida de forma errada no spring mvc e vai como o simbolo " Hi I?am interested!" pro banco de dados.

O interessante é que Firefox, Safari, Chrome, Ie desktop e phone android funcionam, mas somente no safari do iphone acontece esse problema.

O que eu descobri até então é que o ' que vem do iphone vem num outro formato ’ (right single code, copiado do teclado do iphone) e que eh diferente ' (aspas simples do nosso teclado).

Aqui seguem as minhas configurações:

ServletSpringMVC.java

 @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
        encodingFilter.setEncoding("UTF-8");
        encodingFilter.setForceEncoding(true);
        return new Filter[] {encodingFilter, new OpenEntityManagerInViewFilter()};
    }

template.tag


<meta charset="utf-8" />

form.jsp

<form:form id="chat-message"
    servletRelativeAction="${s:mvcUrl('UC#chatSendMessage').build()}"
    commandName="userChatForm" method="POST">
    <form:hidden path="idUserReceiver"
        value="${userChatForm.idUserReceiver}" />
    <form:hidden path="urlRedirection"
        value="${userChatForm.urlRedirection}" />


    <div class="row">
        <div class="col-xs-12 col-md-6 col-lg-4">
            <div class="form-group">
                <label for="firstName"><s:message
                        code='my.settings.form.FirstName' /> <span class="text-danger">*</span></label>
                <form:input path="firstName" cssErrorClass="form-control error"
                    cssClass="form-control" value="${chat.userSender.firstName}" />
                <form:errors id="firstNameMessageError" path="firstName"
                    cssClass="text-danger" />
            </div>
        </div>
        <div class="col-xs-12 col-md-6 col-lg-4">
            <div class="form-group">
                <label for="lastName"><s:message
                        code='my.settings.form.LastName' /> <span class="text-danger">*</span></label>
                <form:input path="lastName" cssErrorClass="form-control error"
                    cssClass="form-control" value="${chat.userSender.lastName}" />
                <b class="tooltip tooltip-bottom-right"><s:message
                        code="validation.error.firstAndLastName" /></b>
                <form:errors id="lastNameMessageError" path="lastName"
                    cssClass="text-danger" />
            </div>
        </div>
    </div>

    <div class="row">
        <div class="col-xs-12">
            <div class="form-group">
                <label for="message"><s:message code='chat.message' /> <span
                    class="text-danger">*</span></label>
                <form:textarea maxlength="1500" rows="5" class="form-control"
                    path="message" id="message" cssErrorClass="form-control error" />
                <form:errors id="messageMessageError" path="message"
                    cssClass="text-danger" />
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-xs-12">
            <button id="button-save" type="submit"
                class="btn btn-primary pull-right">
                <s:message code="user.chat.button.submit_message" />
            </button>
            <a href="${userChatForm.urlRedirection}"
                class="btn btn-default pull-right"><s:message
                    code="form.button.Cancel" /></a> <a class="btn btn-danger pull-right"
                type="button" data-toggle="modal" data-target=".bs-example-modal-sm"><s:message
                    code="btn.chat.block_user" /></a>
        </div>
    </div>
</form:form>

Espero que alguém possa me dar uma luz!

Obrigado

2 respostas

Olha, essa é uma boa dúvida... não sei muito bem como que a galera tem feito por aí, mas acho que eu adicionaria um javascript no cliente para tratar apenas o safari problemático... no javascript eu tentaria substituir as aspas simples pelo código de caracter que não gere problema no seu servidor.

José, boa tarde !! O encoding dos seus arquivos, também está "UTF-8"? Quando você clica com o botão direito sobre o arquivo no Eclipse e vai até propriedades, na guia Resources - Text file encoding, também está "UTF-8"?