在JSP中,我要把界面填写的数据保存到数据库中,然后从数据库读取出,展示在界面。在学校我必须把数据类型string转换成“ISO-8859-1”格式,否则界面显示的是???,可一到了家里我的电脑上,就不用转换,如果转换的话,界面显示???乱码,很是郁闷,那位高手帮忙解决一下。具体代码如下:     String name=request.getParameter(文本框name);
     name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
    
    到底怎样才不乱码吖?

解决方案 »

  1.   

    直接写个简单的过滤器.package org.utils;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;public class Encoding implements Filter { private String encoding;
    public void destroy() {
    // TODO 自动生成方法存根 } public void doFilter(ServletRequest request, ServletResponse arg1,
    FilterChain fc) throws IOException, ServletException {
    // TODO 自动生成方法存根
    request.setCharacterEncoding("GBK");
    fc.doFilter(request, arg1);
    } public void init(FilterConfig fc) throws ServletException {
    // TODO 自动生成方法存根
    this.encoding=fc.getInitParameter("encoding");
    }}
    然后在web.xml文件里配置下<?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>3</param-value>
        </init-param>
        <init-param>
          <param-name>detail</param-name>
          <param-value>3</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      <!-- 添加过滤器开始 -->
      <filter>
       <filter-name>guolvqi</filter-name>
       <filter-class>org.utils.Encoding</filter-class>
       <init-param>
       <param-name>encoding</param-name>
       <param-value>GBK</param-value>
       </init-param>
      </filter>
      <filter-mapping>
       <filter-name>guolvqi</filter-name>
       <url-pattern>/*</url-pattern>
      </filter-mapping>
      <!-- 结束 -->
    </web-app>
      

  2.   

    post方式乱码:
    添加request.setCharacterEncoding="gb2312"试试。
      

  3.   

    因为你数据库指定的编码集可能不同,所以会出现家里行,学校不行的样子。
    二楼的方法好,如果你用spring的话,里面有CharactorEncoding过滤器,配置一下就行。
    最好写好你是用什么方法(get,post),因为这两种方法处理编码的方式不一样!
      

  4.   

       还没有学习spring,过滤器也不是很了解。回答的很专业,谢谢,我从中好好研究研究!
      

  5.   

       还没有学习spring,过滤器也不是很了解。回答的很专业,谢谢,我从中好好研究研究!