首页 / JAVA / javaweb后台接收中文乱码。
javaweb后台接收中文乱码。
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javaweb后台接收中文乱码。,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3063字,纯文字阅读大概需要5分钟。
内容图文
加一个编码过滤器。
package cn.itcast.goods.filter; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Map; import java.util.Map.Entry; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; /** * 处理整个web应用全站乱码 * 1)处理请求参数乱码 * 2)处理响应正文乱码 * @author RoySun * */ public class MixCodeFilter implements Filter{ @Override public void destroy() {} @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; //针对post提交方式,这一句即可处理接收请求中的乱码 request.setCharacterEncoding("utf-8"); /* *过滤器中处理响应正文乱码, *所有拦截到的资源的乱码问题都可以解决 */ response.setContentType("text/html;charset=utf-8"); /* * 采用装饰者模式,将request对象进行包装, * 在装饰类中重写getParameter等获取参数的方法 */ MyHttpServletRequest myRequest = new MyHttpServletRequest(req); chain.doFilter(request, res); } @Override public void init(FilterConfig onfig) throws ServletException {} } //装饰类,对HttpServletRequest类进行装饰,重写获取请求参数的方法 class MyHttpServletRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; //构造方法 public MyHttpServletRequest(HttpServletRequest request) { super(request); this.request = request; } @Override public String getParameter(String name) { return this.getParameterValues(name)==null? null:this.getParameterValues(name)[0]; } @Override public String[] getParameterValues(String name) { return this.getParameterMap().get(name); } private boolean isEncode=true; @Override public Map<String, String[]> getParameterMap() { if("GET".equalsIgnoreCase(request.getMethod())){//针对get提交方式进行手动编解码 Map<String, String[]> map = request.getParameterMap(); if(isEncode){ for (Entry<String, String[]> entry : map.entrySet()) { String[] params = entry.getValue(); for(int i=0;i<params.length;i++){ try { System.out.println("过滤器之前的参数:" + params[i]); params[i]=new String(params[i].getBytes("iso8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } isEncode = false; } return map; }else{//其余6种提交方式 return request.getParameterMap(); } } }
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>cn.itcast.goods.filter.MixCodeFilter</filter-class> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
内容总结
以上是互联网集市为您收集整理的javaweb后台接收中文乱码。全部内容,希望文章能够帮你解决javaweb后台接收中文乱码。所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。