Java Spring MVC:如何存储&x20AC;性格
我正在使用Spring3MVC,我已经设置了一个表单来捕获用户的输入。此表单在我的模型对象Event中包含一个描述字符串的textarea。我对应的控制器如下所示: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("
@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
- 第二种是在firefox上使用firebug之类的插件,在net选项卡上检查post请求和参数值
- 第三,将以下元信息添加到jsp文件的头部:
将编码过滤器添加到web.xml中,就像您所做的那样
这适用于部署在WebSphere6.1上的我的webapp。spring的版本是spring 3.0.6。您可以在这里查看一些内容
- 首先是log4j appender的编码 log4j.appender.emsSpringLogFile.encoding=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似乎与此无关。