关于乱码问题的小小总结

JSP 专栏收录该内容
2 篇文章 0 订阅

最近刚被乱码问题折腾的我夜不能寐~

最近想做个办公管理系统的的项目。没想到刚做了一点就碰到让人头疼的乱码问题。因为要用到上传组件。我用的是

smartupload组件~~于是就上网找了一通。大家说的最多的没有统一编码。我就把所有的编码都改成GBK。启动-->

运行还是乱码。不行。还得重新就行分析。有人说smartupload乱码问题由来已久。不过也有牛人说可以用GBK编码

还有修改源码来解决。无奈我不想弄源码。只好在一次查找是否有没有修改的GBK。我都冲动的想修改TOMCAT

不过运行还是没有通过。我扛不住了。就去问我的一个老师。老师还好给我说了一通。不过还是没有调试通过。我想也有可能是smartupload的问题。于是又下载一个Uploadbean组件进行重新调试。我此时觉得我应该可以调试通过。领我失望的是。口碑较好的UpLoadBean也没有通过。我就想到底是什么原因那。 头很大。只好求救CSDN啦。我先查找了以前的帖子。正好一一篇新手头疼的乱码问题。我看了原来是用过滤器进行保证请求的页面全是GBK编码。我如获至宝。加入到我的项目里。另我气愤的还是乱码依旧。不得已于是在J2EE发了一个关于乱码的问题。我也加紧调试我的程序。正好我一个同学来我宿舍。我告诉他帮我跳下我的乱码问题。他把他的笔记拿给我看。上面总结的第一条写照在sevlet中要把 输出流写在设置编码的前面。我恍然大悟。原来是这个小问题。我想应该是这个问题了我说这么设置之后编码依然是ISO编码。果不出所料调试通过。

对乱码问题的总结如下:

1。首先加个过滤类。让所有请求的类都变成GBK编码。

代码如下:web.xml

<filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>com.livechance.filter.EncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>GBK</param-value>
    </init-param>
  </filter>
   <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

filter 类如下:

package com.livechance.filter;

import java.io.IOException;

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.HttpServlet;

public class EncodingFilter extends HttpServlet implements Filter
{
    private FilterConfig config = null;
    private String targetEncoding = "GBK";

    public void init(FilterConfig filterConfig)
    {
        this.config = filterConfig;
        this.targetEncoding = config.getInitParameter("encoding");
    }

    public void destroy()
    {
        config = null;
        targetEncoding = null;
    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
                         FilterChain filterChain)
    {
        ServletRequest request = (ServletRequest) servletRequest;
        try
        {
            request.setCharacterEncoding(targetEncoding);
            filterChain.doFilter(servletRequest, servletResponse);
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }

}


 

2.。页面有中文的时候:

解决办法:servlet; response.setContentType("text/html;harset=GBK");

JSP中:<%#@ page contentType="text/html;charset=gb2312"%>

注意:一定要写在PrintWriter out=response.getWriter();之前

 

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

guolimin1118

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值