Servlet输出中文乱码的问题之Filter解决方法

Servlet输出中文乱码的问题之Filter解决方法

Filter过滤器的代码如下:

package filter;

import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class charsetFilter implements Filter
{

    @Override
    public void destroy()
    {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException
    {
        /**
         * ServletRequest.getParameterMap()返回一个Map
         * 参数的名字做为Map的key,而参数的值则做为Map的值
         * Map的key是String类型,而Map的值则是String[]类型
         */
        Map parameterMap = request.getParameterMap();
        /**
         * 如果返回的结果不为空,则执行代码
         */
        if(!parameterMap.isEmpty())
        {
            /**
             * 先利用Map.keySet()方法, 返回的是些些映射中包含的键的set视图,返回类型是Set
             * 然后再利用Set.iterator()方法生一个迭代器
             */
            Iterator it = parameterMap.keySet().iterator();
            /**
             * 创建一个String类型的数组, 用来装此映射中的value
             */
            String value[] = null;
           
            while(it.hasNext())
            {
                /**
                 * 将键对应的值放放到String数组中.
                 */
                value = (String[])parameterMap.get(it.next());
                /**
                 * 利用循环来遍历String数组中的所有字符串
                 * 再利用String的构造方法String(byte[] bytes, String charsetName)
                 * 方法来生成新的编码的字符串.
                 */
                for(int i=0;i<value.length;i++)
                {
                    value[i] = new String(value[i].getBytes("ISO-8859-1"),"UTF-8");
                }
            }
        }
        chain.doFilter(request,response);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException
    {

    }

}

 

2. Web.xml文件中对Filter的配置, 需要将Filter配置的代码段放在配置Servlet代码段之前:

 <filter>
      <filter-name>charsetFilter</filter-name>
      <filter-class>filter.charsetFilter</filter-class>
  </filter>
 
  <filter-mapping>
      <filter-name>charsetFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

 

说明: <url-pattern>/*</url-pattern>

上面的"/*"代码的意思是对所有的Servlet/JSP/HTML进行过滤操作, 如果只想对某一个Servlet/JSP/HTML进行操作, 只需要将"*"换成其相应的名字即可.

时间: 2024-09-18 21:40:06

Servlet输出中文乱码的问题之Filter解决方法的相关文章

Servlet的中文乱码常用解决方法

Servlet的中文乱码常用解决方法 在servlet页面就出错了,打印出就是乱码,why? public class toDetail extends HttpServlet {  public void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {   response.setContentType("text/html&quo

android工程输出中文乱码 Java工程正常

问题描述 android工程输出中文乱码 Java工程正常 新建android工程用EditText输入数据,异或加密输出,输出中文为乱码,新建Java工程输出正常,跪求大神指点.百度都快翻烂了./(ㄒoㄒ)/~~ 解决方案 你输出密文时没有指定解码格式?android和java工程默认使用的解码可能不同 解决方案二: 应该是项目制定的编码不同吧? 解决方案三: 转码试试看能正常么有可能是两面的编码格式不一样

使用WebLogic的OTN插件时Eclipse控制台输出中文乱码解决方法

  使用WebLogic时控制台输出中文乱码解决方法1.找到weblogic安装目录,当前项目配置的domain2.找到startWebLogic.cmd文件3.打开文件,在"call "%DOMAIN_HOME%\bin\startWebLogic.cmd" %*"上面增加如下代码即可,主要是设置UTF-8啊. @ECHO OFF @REM WARNING: This file is created by the Configuration Wizard. @RE

vba 连接mysql case when 输出中文乱码

问题描述 vba 连接mysql case when 输出中文乱码 strsql = "SELECT ui.user_name ,bo.id, " & _ "CASE WHEN p_id =77 THEN '名校贷' WHEN p_id =83 THEN '名校贷应急包' else '' END ," & _ "CASE WHEN bo_is_success=0 THEN '待处理' WHEN bo_is_success=1 THEN '成

数据库管理-关于eclipse中将数据导入数据库的中文乱码问题。急求解决

问题描述 关于eclipse中将数据导入数据库的中文乱码问题.急求解决 我也在网上找过相关问题,在eclipse中也改了三个地方的字符编码,以及数据库管理软件中的编码.但是提交到数据库后 ,还是有乱码,全部都是问号,图如下:开发">计算机数据库管理"> 以及代码: <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.PreparedStateme

编码-android studio 打开eclipse项目中文乱码(已经试过几种方法都不行)

问题描述 android studio 打开eclipse项目中文乱码(已经试过几种方法都不行) 项目是从师兄那里传下来的,当时是在eclipse下的项目,我用eclipse看了一下编码是GBK.目前在android studio 中中文注释和跑起来之后界面上的所有中文都是乱码. 目前试过的方法有: 在android studio 中调setting>appearance中的字体,没有用 setting>editor>file encoding,如图不管如何更改设置,apply按不动!直

远程linux xshell下输出中文乱码解决方法_unix linux

使用xshell登录中文版CentOS或者redhat时,在xshell下如果输出的是中文的话可能会显示乱码,通过如下办法可以有效的解决乱码问题 linux中文乱码解决方法如下: 复制代码 代码如下: [root@localhost ~]# cd /etc/sysconfig/ [root@localhost sysconfig]# cp i18n i18n.bak #备份i18n文件 [root@localhost sysconfig]# echo "" >i18n [root

jsp传参 servlet接收中文乱码问题的解决方法_JSP编程

在公司实习了8个月,一直都是做android和h5的,但是发现做程序连一点服务都不会该怎么办,所以最近开始学起了java,不知道是不是因为框架学多了,现在看起springmvc框架比以前看起来简单太多了,这里我是准备从hibernate开始学习,毕竟数据是根本嘛,首先我用的是hibernate+servlet,但是在jsp页面传参到servlet的时候中文一直乱码,我尝试了好多方法,最后还是解决了. 第一,首先看清项目的编码,jsp页面的编码 第二,修改tomcat 下面的server.xml文

CodeIgniter输出中文乱码的两种解决办法_php实例

在controller直接echo的时候,某些浏览器会出现乱码的情况.可以用下面两种方法解决: 1.常用的php的header函数 复制代码 代码如下: header("Content-type:text/html;charset=utf-8"); 示例: 复制代码 代码如下: <?phpclass home extends CI_Controller { function index() { //设置编码 header("Content-type:text/html;