乱码类型:
1.post请求:jsp->Controller 传入参数时
2.ajax异步请求:Controller->jsp 取出数据时
UTF-8编码:8-bit Unicode Transformation Format;它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间;
GBK编码:(Guo-Biao Kuozhan) Chinese Internal Code Specification; UTF8是国际编码,它的通用性比较好,外国人也可以浏览论坛
乱码检测处理
1.post请求:(常在form表单内部)
方法一:在web.xml中配置filter即可->对所有post表单均有效
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:mybatis-spring.xml</param-value>
</context-param>
<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>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
此时处理1.:加入enctype;虽然没有上传文件,但依然有效
<form action="uploadfile" method="post" enctype="multipart/form-data" >
此时处理2:在controller层拿到jsp传的数据,直接强转
String param= new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");
方法三:
参考babasport第二天05::26分钟;修改tomcat配置文件:confg
2.ajax异步请求:加入produces = "text/html;charset=UTF-8
@RequestMapping(value = "/ajaxContent", produces = "text/html;charset=UTF-8;")
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步