为了账号安全,请及时绑定邮箱和手机立即绑定

使用Spring MVC Web应用程序以html格式强制UTF8编码

使用Spring MVC Web应用程序以html格式强制UTF8编码

三国纷争 2021-04-05 16:17:01
我有一个Spring MVC Web应用程序,并使用JSP创建了我的网页。问题是,当我直接提交表单时,编码为“ application / x-www-form-urlencoded”。当我通过AJAX请求从相同的表单提交相同的数据时,编码为“ application / x-www-form-urlencoded; charset = UTF-8”。我需要输入utf8编码的字符,该字符是我的控制器中的用户。例如:一个用户键入“äöüß”,我的控制器将得到“äöüÔ。当我通过AJAX请求发送数据时,我得到正确的“äöüß”。我究竟做错了什么?这是通过http-post提交的简单表格。进行utf8编码并非不可能。我的应用程序在Spring 5.0.1的tomcat 8.5.11上运行。网页都是HTML5,我在Servlet 3.1环境中使用JSTL 1.2.5。JSON映射和序列化由fastxml 2.9.2完成该配置完全基于Java。我的WebAppInitializer(aka web.xml)...@Overrideprotected Filter[] getServletFilters() {    return new Filter[] { new HiddenHttpMethodFilter(),                             new CharacterEncodingFilter("UTF-8", true, true) };}在我的servlet配置中,我为StringHttpMessageConverter显式设置了一个字符集。...@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {    converters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));    converters.add(new ResourceHttpMessageConverter());    converters.add(new MappingJackson2HttpMessageConverter());}该网页看起来像<%@page contentType="text/html;charset=UTF-8"%><%@page pageEncoding="UTF-8"%><%@page session="true" %><%@page trimDirectiveWhitespaces="true" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %><%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %><!DOCTYPE html><html>...<meta charset="UTF-8"/>...<form id="createArticleForm" action="<c:url value='/article/save' />" method="post">  <input type="hidden" name="utf8" value="&#x2713;" />...  <input type="text" name="name" required="required" />...</form>如您所见,我还尝试了使用隐藏字段进行utf8黑客攻击。但是什么都行不通。即使我设置了表单属性accept-charset =“ UTF-8”和/或encoding =“ application / x-www-form-urlencoded; charset = UTF-8”,也没有任何改变。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信