当前位置: 首页 > 知识库问答 >
问题:

Spring表单和控制器UTF-8错误编码

赵英哲
2023-03-14

我的UTF-8编码有问题。我的webapp使用法语单词,这些单词在我的jsp中正确显示,但在发布后不会显示在我的控制器中。例如,在我的jsp中,我有:

Prénom de mon père

当我发布表单时,控制器得到:

Prénom de mon père

characterEncodingFilter是文件中的第一个过滤器,如本文所述

这是我的jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!doctype html>
<%@ taglib uri="http://tiles.apache.org/tags-tiles"         prefix="tiles" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"          prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form"   prefix="form" %>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta http-equiv="content-language" content="fr">
    ...
    </head>

    <form:form class="form-horizontal" modelAttribute="AlimentationForm"
    action="${actionUrl}" method="POST">
    ...
         <form:input path="questions" class='input-xlarge' type='text' value='Prénom de mon père'/>
    </form>

我的网络。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>/web/*</url-pattern>
</filter-mapping>

和我的应用程序配置。xml

<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <beans:property name="basename">
        <beans:value>classpath:messages</beans:value>
    </beans:property>
    <beans:property name="defaultEncoding" value="UTF-8" />
</beans:bean>

我不知道我的应用程序或配置出了什么问题,你知道吗?

提前感谢。

编辑:我正在使用HDIV框架

共有2个答案

徐嘉勋
2023-03-14

确保JSP页面正确编码发送到服务器的数据。尝试添加

<%@page pageEncoding="UTF-8" %>

到JSP的顶部,因为这确保了通过超文本传输协议发送的任何数据都将正确编码。

我认为默认的http编码是ISO-8859-1。

赫连瑾瑜
2023-03-14

这个问题实际上来自HDIV框架版本2.1.2。如果你不能使用下一个版本,这里有一个补丁。

希望它能帮助别人。

 类似资料:
  • 我正在尝试提交一个表单,其中包含UTF8字符。表单如下所示: 我的服务器是基于spring的。我的网络。xml已具有编码筛选器: 问题是UTF-8字符在某处被搞砸了。我在控制器的开头放了一个断点,在这一点上角色本身就一团糟。此外,如果我在控制器内生成UTF8字符,它将在浏览器中正确渲染。只是在表单帖子上,控制器没有正确接收字符。 知道我可能做错了什么吗? 编辑:看起来,在新的页面中数据并没有被弄乱

  • 问题内容: 我们尝试在Windows上使用Java和UTF-8。该应用程序在控制台上写入日志,我们希望对日志使用UTF-8,因为我们的应用程序具有国际化的日志。 可以配置JVM,使其使用JVM的参数生成UTF-8 。它工作正常,但Windows控制台上的输出出现乱码。 然后,我们可以将控制台的代码页设置为65001(),但是在这种情况下,文件将无法工作。这意味着当我们尝试通过脚本(名为start.

  • 我的rails应用程序遇到了问题,我最近从一个不同的开发人员那里接管了这个应用程序。虽然我知道错误意味着什么,我知道我需要强制所有的UTF-8,但没有运气。我已经尝试清理应用程序目录,并将所有文件更新为UTF-8(以前在不同的应用程序上工作过)。 我还阅读了关于ruby的UTF-8问题的不同帖子(例如这里和这里)。 当我运行或任何其他bundle操作时,我会得到以下信息: 还有以下绑定程序的其他错

  • 我尝试做一个java web应用程序。在本地Tomcat7服务器上一切都很好。我有一个jsp文件;

  • 问题内容: 目前,我正在尝试开始使用Spring MVC。在尝试时,我遇到了编码问题。 我想在我的JSP页面上显示UTF-8字符,所以我在ModelAndView中添加了一个带有UTF-8字符的字符串。看起来像这样: 在JSP页面上,我只想显示具有UTF-8字符的字符串,如下所示: 结果,我得到以下结果: 请注意,下面的代码显示没有编码错误。我还在Springsource Tool Suite中将

  • null 在一个案例中,我还意识到,如果我从Git diff复制原始值,并用它替换Eclipse中错误的值,那么我在消息属性文件中就有了正确的umlauts。