`
akun_007
  • 浏览: 26354 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

web工程乱码的解决方法

阅读更多
两个小测试而已。
1、jsp页面webtest.jsp的代码如下:
 

<html>
    <head>
        <title></title>
    </head>
    <body>
        <form name="" action="GetUserNameServlet" method="POST">
            <input type="text" name="username"/>
            <input type="submit" value="submit"/>
        </form>
        <a href="GetUserNameServlet?username=哈哈">哈哈</a>
    </body>
</html>

servlet的代码如下:

public class GetUserNameServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        System.out.println(request.getParameter("username"));
        
        request.setAttribute("username", request.getParameter("username"));
        
        RequestDispatcher dispatcher = request.getRequestDispatcher("resultjsp.jsp");
        dispatcher.forward(request, response);
        
    }
}

转向到resultjsp.jsp的页面代码如下:

<html>
    <head>
        <title></title>
    </head>
    <body>
        <%=request.getAttribute("username")%>
    </body>
</html>

现在要完成的任务是:在webtest.jsp的文本框中输入汉字和通过点击超级链接都不能出现乱码。

首先,要做一个filter,网上源码很多这里就不列举了,这个filter需要把编码格式转为GB2312。

其次,在两个jsp页面的最顶端加入如下代码:

<%@ page contentType="text/html; charset=GB2312" %>

最后,在tomcat的server.xml文件中找到Connector标签,并添加useBodyEncodingForURI="true"。注:tomcat5.0需要修改,4.0就不用,默认就有这句话。

重启tomcat后,就达到目的了。

2、解决freemarker的乱码问题

依照上面那个例子,只需替换jsp页面为ftl页面,修改方法为:将.jsp改为.ftl,并将页面中

<%@ page contentType="text/html; charset=GB2312" %>

这行代码去掉即可,最后在修改好的resultftl.ftl中,将

<%=request.getAttribute("username")%>

改成

${username}

别忘了把servlet中转发的页面也改了。

修改完上面那些,最后一步就是在web.xml中将引入freemarker的那句编码格式改成GB2312就OK了。

 

附上我忘记从那里摘得转化编码的filter:
 

public class EncodingFilter extends HttpServlet implements Filter {

    private String encoding = null;
    protected FilterConfig filterConfig = null;
    private boolean ignore = true;

    public void destroy() {

        this.encoding = null;
        this.filterConfig = null;

    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        if (ignore || (request.getCharacterEncoding() == null)) {
            String strencoding = selectEncoding(request);
            if (strencoding != null) {
                request.setCharacterEncoding(strencoding);
            }
        }

        chain.doFilter(request, response);

    }

    public void init(FilterConfig filterConfig) throws ServletException {

        this.filterConfig = filterConfig;
        this.encoding = filterConfig.getInitParameter("encoding");
        String value = filterConfig.getInitParameter("ignore");
        if (value == null) {
            this.ignore = true;
        } else if (value.equalsIgnoreCase("true")) {
            this.ignore = true;
        } else if (value.equalsIgnoreCase("yes")) {
            this.ignore = true;
        } else {
            this.ignore = false;
        }

    }

    protected String selectEncoding(ServletRequest request) {

        return (this.encoding);

    }

}

web.xml中这样配置:

<filter>
    <filter-name>EncodingFilter</filter-name>
    <display-name>EncodingFilter</display-name>
    <description>EncodingFilter</description>
    <filter-class>com.webtest.filter.EncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>GB2312</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 
分享到:
评论

相关推荐

    Java web工程乱码解决方案

    这里总结了我在j2ee开发过程中,中文乱码的解决方案。希望能够帮到大家!

    Java WEB开发中的中文乱码问题解决方法.pdf

    为了解决这一问题,首先需要了解Java Web工程字符编码的基本理论,包括字符编码集、编码和解码过程,以及不同编码方式的规则。接下来,将详细探讨这些知识点,并提供相应的解决方案。 Java语言是一种纯面向对象的...

    Java Web程序开发中字符乱码的原因与解决办法.pdf

    解决字符乱码的方法主要是统一编码方式,使编码和解码过程使用相同的字符编码。对于不同类型的编码问题,有不同的解决方案: 1. 开发工具中的乱码问题:以MyEclipse开发工具为例,通常新建工程后,默认编码为ISO...

    weblogic部署项目乱码解决

    除了上述步骤外,还可以考虑以下几种方法来进一步优化字符编码设置,从而彻底解决乱码问题: 1. **修改Web应用程序的`.jsp`文件编码**:确保所有的`.jsp`文件都以UTF-8编码保存,并且在页面头部加入`; charset=UTF-...

    Eclipse编译器中文乱码解决

    解决这个问题的方法通常涉及更改Eclipse的默认文件编码设置。以下是几种常见的解决方案: 1. **更改工程的文本文件编码**: - 打开工程的属性(右键点击工程,选择“Properties”)。 - 在左侧的导航栏中选择...

    【IDEA】 控制台中文乱码解决(csdn)————程序.pdf

    在IDEA中,普通工程的中文乱码问题可以通过修改vmoptions文件和设置编码格式来解决。下面是具体的解决步骤: 1. 找到IDEA的安装路径下的bin目录,选择vmoptions文件。 2. 用记事本打开vmoptions文件,并在最后一行...

    Nutz源码Jdoc在IDE中补全提示时出现乱码解决办法

    标题 "Nutz源码Jdoc在IDE中补全提示时出现乱码解决办法" 涉及的问题是在使用IDE(集成开发环境)查看Nutz框架的源码,并尝试利用Javadoc(Jdoc)进行代码补全提示时遇到了乱码问题。这通常是由于编码设置不正确导致...

    解决ecside导出文件乱码问题

    本文将详细讨论如何解决ecside导出PDF时出现的中文乱码问题,以及提供的字体文件如何解决这个问题。 ecside是一款基于Java的开源Web应用框架,它提供了丰富的功能,包括数据导出。在某些情况下,当ecside导出包含...

    关于SSH中文乱码的一个小总结.doc

    SSH中文乱码解决方案 SSH(Secure Shell)中文乱码问题是开发中常见的问题之一。本文将总结解决SSH中文乱码问题的方法,主要涉及到spring的编码过滤器、struts.properties配置、MyEclipse工程属性设置等方面。 一...

    JFreeChart 各种图形的 web工程

    这个特定的例子是将JFreeChart应用于Web工程中,解决了在Web环境下可能出现的乱码问题,确保了图表的清晰易读。 **1. 折线图** 折线图是一种常用的数据可视化方式,常用于显示数据随时间变化的趋势。在JFreeChart中...

    springBoot-mybatis-redis 整合解决乱码问题.rar

    这个压缩包"springBoot-mybatis-redis 整合解决乱码问题.rar"似乎提供了一个示例工程,展示了如何解决在整合过程中可能出现的编码问题。以下是对这些技术以及整合过程中的关键知识点的详细解释。 1. **Spring Boot*...

    基于pushlet_chat技术的群聊实现 解决了中文乱码问题

    【基于Pushlet_Chat技术的群聊实现及中文乱码问题解决方案】 Pushlet_Chat是一种实时通信技术,常用于构建即时消息系统(IM),尤其在B/S架构中广泛应用。它基于HTTP长连接,通过服务器向客户端推送数据,实现了低...

    jspsmartupload上传文件工程路径中文无乱码

    在这个Eclipse工程实例中,我们将探讨如何使用`jspsmartupload`来实现文件和图片的上传,同时确保文件保存路径中的中文字符不会出现乱码问题。 首先,`jspsmartupload`库解决了文件上传过程中的一些常见问题,如...

    java springmvc乱码解决归纳整理详解

    Java SpringMVC 乱码解决方案详解 Java SpringMVC 中的乱码问题是开发过程中常见的问题之一,本篇文章将对 Java SpringMVC 中的乱码问题进行详细的分析和解决方案介绍。 页面传值到后台乱码解决 在 Java ...

    ajax提交到servelt获取参数有乱码的解决方法

    在Web开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛用于实现页面的异步更新,提高用户体验。然而,当Ajax向Servlet发送请求时,如果处理不当,可能会遇到中文参数乱码的问题。本文将深入探讨如何解决...

    java_web上传教程

    Java_web 上传教程 本篇文章主要介绍了 Java_web 上传的两种方法:SmartUpload 和 Commons-...本篇文章提供了两个 Java_web 上传方法的介绍和比较,并总结了作者在使用 Commons-FileUpload 时遇到的问题和解决方法。

    Protege中文问题的解决方案

    Protege 是一个基于 Java 的开源知识管理工具,广泛应用于知识表示、知识工程、人工智能等领域。然而,Protege 在处理中文问题时存在一些问题,例如乱码、无法显示中文字符等。下面是 Protege 中文问题的解决方案: ...

    01 下载文件在WebRoot文件夹下的downFile文件夹内.zip

    01 下载文件在WebRoot文件夹下的downFile文件夹内.zip 本工程用于演示文件下载,下载文件在WebRoot文件夹下的downFile文件夹内。 本工程编码方式:UTF-8 ...本工程有效地解决了下载时中文文件名出现乱码的情形。

Global site tag (gtag.js) - Google Analytics