Spring MVC: Как сохранить символ €? - PullRequest
1 голос
/ 13 июля 2010

Я использую Spring 3 MVC и настроил форму для ввода ввода от пользователя.Эта форма включает текстовую область для описания String в моем модельном объекте Event.Мой соответствующий контроллер выглядит следующим образом:

 @RequestMapping(value = "/admin/event/{eventId}/edit", method = RequestMethod.POST) 
 public String updateEvent(@ModelAttribute Event event) {

         logger.info("updateEvent(): Event description: " + event.getDescription());

         return "redirect:/admin/event/" + event.getId() + "/edit";
} 

Всякий раз, когда я вводю символ '€' в поле описания формы и отправляю POST форму, в зарегистрированном описании появляется знак '?'вместо «€».

Я использую CharacterEncodingFilter перед моим DispatcherServlet, но это не решило проблему.Для справки, мой web.xml выглядит так:

<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>
        org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
     </init-param>
     <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
     </init-param>
 </filter>

 <filter-mapping>
     <filter-name>characterEncodingFilter</filter-name>
     <url-pattern>/*</url-pattern>
 </filter-mapping>

<servlet>
    <servlet-name>baseApp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>baseApp</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

Есть мысли о том, как правильно запечатлеть символ €?

Обновление:

Я задавал похожий вопрос, ранее связанный с MySQL, но, как вы можете видеть из приведенной выше демонстрации, € преобразуется в a?без участия MySQL, то есть между формой POST и регистрацией описания события.Вот почему я снова задал вопрос ... кажется, что эта проблема изолирована от Spring.

Ответы [ 3 ]

1 голос
/ 01 августа 2012

Есть несколько вещей, которые вы можете проверить здесь.

  • Во-первых, это кодирование приложения log4j.

    log4j.appender.emsSpringLogFile.encoding = UTF-8

Откройте файл журнала, например, в notepad ++ и убедитесь, что кодировка UTF-8.
  • Второй - использование плагина типа firebug на firefox для проверки на вкладке net запроса post и значений параметров.

  • В-третьих, добавьте метаинформацию ниже в заголовок вашего jsp файла:

   < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" >

Добавьте фильтр кодировки в ваш web.xml, как вы сделали.

Это работает для моего веб-приложения, развернутого в Websphere 6.1. Версия весны - весна 3.0.6.

0 голосов
/ 24 февраля 2013

Попробуйте добавить следующее в заголовок вашего jsp файла.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

в следующем вопросе проблема решена.В тот же вопрос я добавил ссылку на другие вопросы, связанные с кодировкой текста.

0 голосов
/ 13 июля 2010

Вы уверены, что это не проблема с вашей конфигурацией регистратора? Проверьте это следующим образом:

logger.info("updateEvent(): isCorrect=" + 
    event.getDescription().contains("\u20ac")); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...