JSP/JAVA/SpringMVC中FORM表单提交中文乱码

本文详细介绍了在WEB开发中遇到的乱码问题及解决方案,包括HTML/JSP页面编码设置、JAVA后台处理、过滤器Filter正确使用顺序,以及尝试其他如form标签accept-charset属性和Tomcat配置调整的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WEB开发,乱码是常见的问题.

1.HTML/JSP页面要设置:

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

<meta charset="UTF-8">

2.JAVA后台:

2.1使用过滤器Filter纠正:

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");

2.2重新编码纠正

val = new String(val.getBytes("iso8859-1"), "UTF-8");

2.3当我们使用框架时,一定要注意Filter的顺序,SpringMVC有CharacterEncodingFilter和URIDecodingFilter两个Filter.一般来说我们都会同时使用.但使用时一定是先加载CharacterEncodingFilter后加载URIDecodingFilter.

其原因,猜测是:

a)request读取参数时应该使用了Reader

b)当request的参数还没被读取过时,Reader还没初始化,设置CharacterEncoding,在后续的参数读取时,Reader使用编码初始化了,中文可以顺利读出.

c)而如果还没设置CharacterEncoding就读取,服务器(tomcat)可能就使用默认的编码ISO-8859-1初始化了Reader,读了参数,而且使用了默认编码后,你修改CharacterEncoding只是形式上修改了,后续的参数读取已经不起作用,因为Reader不会重新初始化.

d)所以CharacterEncodingFilter要在URIDecodingFilter前面,不然无效.

 

其他网上的答案(没办法了,可以试试,本次问题我试了没用):

3.使用form标签的 accept-charset="UTF-8"属性.

4.修改tomcat的配置问题,在connector元素上添加URIEncoding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值