Java Spring MVC:如何存储&x20AC;性格

Java Spring MVC:如何存储&x20AC;性格,java,unicode,utf-8,spring-mvc,Java,Unicode,Utf 8,Spring Mvc,我正在使用Spring3MVC,我已经设置了一个表单来捕获用户的输入。此表单在我的模型对象Event中包含一个描述字符串的textarea。我对应的控制器如下所示: @RequestMapping(value = "/admin/event/{eventId}/edit", method = RequestMethod.POST) public String updateEvent(@ModelAttribute Event event) { logger.info("

我正在使用Spring3MVC,我已经设置了一个表单来捕获用户的输入。此表单在我的模型对象Event中包含一个描述字符串的textarea。我对应的控制器如下所示:

 @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";
} 
<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>
每当我在表单的“描述”字段中输入一个“€”字符并发布表单时,记录的描述都有一个“?”而不是一个“€”

我在DispatcherServlet前面使用了CharacterEncodingFilter,但这并没有解决问题。作为参考,my web.xml如下所示:

 @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";
} 
<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>

字符编码滤波器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
强制编码
真的
字符编码滤波器
/*
baseApp
org.springframework.web.servlet.DispatcherServlet
1.
baseApp
/*
有没有关于如何正确捕捉角色的想法

更新:


我之前问过一个类似的问题,涉及MySQL,但正如您从上面的演示中看到的,欧元被转换为?完全没有MySQL参与,即在发布表单和记录事件描述之间。这就是我再次问这个问题的原因。。似乎此问题与Spring无关。

您确定记录器配置没有问题吗?检查如下:

logger.info("updateEvent(): isCorrect=" + 
    event.getDescription().contains("\u20ac")); 

您确定记录器配置没有问题吗?检查如下:

logger.info("updateEvent(): isCorrect=" + 
    event.getDescription().contains("\u20ac")); 

这里有几件事你可以查一下

  • 首先是log4j appender的编码

    log4j.appender.emsSpringLogFile.encoding=UTF-8
例如,在notepad++中打开日志文件,并确保编码为UTF-8

  • 第二种是在firefox上使用firebug之类的插件,在net选项卡上检查post请求和参数值

  • 第三,将以下元信息添加到jsp文件的头部:


将编码过滤器添加到web.xml中,就像您所做的那样


这适用于部署在WebSphere6.1上的我的webapp。spring的版本是spring 3.0.6。

您可以在这里查看一些内容

  • 首先是log4j appender的编码

    log4j.appender.emsSpringLogFile.encoding=UTF-8
例如,在notepad++中打开日志文件,并确保编码为UTF-8

  • 第二种是在firefox上使用firebug之类的插件,在net选项卡上检查post请求和参数值

  • 第三,将以下元信息添加到jsp文件的头部:


将编码过滤器添加到web.xml中,就像您所做的那样


这适用于部署在WebSphere6.1上的我的webapp。spring的版本是spring 3.0.6。

尝试将以下内容添加到jsp文件的头部

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

接下来,它解决了这个问题。
在同一个问题中,我还提到了与文本编码相关的其他问题

尝试将以下内容添加到jsp文件的头部

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

接下来,它解决了这个问题。
在同一个问题中,我还提到了与文本编码相关的其他问题

重复:跟进:这个问题已经解决了。您需要集中精力解决MySQL/JDBC问题。这远远超过了春天。您最好的选择是编辑后续问题,以便将Spring排除在问题上下文之外(例如,将注意力集中在MySQL/JDBC(和Hibernate?)。还可以创建一个“普通的”JDBC测试用例来测试自己,这样就可以排除Hibernate的嫌疑。。其他问题的很多答案都给出了涉及MySQL的解决方案?在对象被持久化到MySQL之前。这就是为什么我再次问。。。MySQL似乎与此无关。完全重复:后续:这个问题已经解决了。您需要集中精力解决MySQL/JDBC问题。这远远超过了春天。您最好的选择是编辑后续问题,以便将Spring排除在问题上下文之外(例如,将注意力集中在MySQL/JDBC(和Hibernate?)。还可以创建一个“普通的”JDBC测试用例来测试自己,这样就可以排除Hibernate的嫌疑。。其他问题的很多答案都给出了涉及MySQL的解决方案?在对象被持久化到MySQL之前。这就是为什么我再次问。。。MySQL似乎与此无关。