环境:struts+hibernate+mysql4.1.x
以下是我的设置:
1.数据库编码已设置为UTF-8,jndi链接后面加了&useUnicode=true&characterEncoding=utf8
2.struts的过滤器用的默认编码是UTF-8,web.xml设置:
  <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>com.SetEncodingFilter</filter-class>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>    
  </filter>   
  <filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
  </filter-mapping>3.页面上设置<%@ page language="java" pageEncoding="UTF-8" %>
  和<meta http-equiv="Content-Type" content="text/html; charset=utf-8">新增之后,数据库表和页面上都是乱码.
我做了一个试验:在插入数据库之前,将从页面传入数据库的乱码字段用中文字代替存入数据库,然后再查询的该字段页面上显示正常,也就是说,从页面传入后台的编码就是错的,但是我不知道该怎么改.
问题困扰我几天了,求各位帮忙!!
先谢了!

解决方案 »

  1.   

    用的WEB容器是什么啊?TOMCAT吗?
      

  2.   

    <init-param>
          <param-name>encoding</param-name>
          <param-value>GB13080</param-value>
        </init-param>
      

  3.   

    接收的时候先转换一下编码
    ss = new String(ss.getBytes("ISO-8859-1"),"UTF-8");
      

  4.   

    ss = new String(ss.getBytes("ISO-8859-1"),"UTF-8");
    这个可以,但是为什么呢?我的页面上已经设置为UTF-8了,怎么还需要转换呢?如果这样,页面上不是不需要设置了?
      

  5.   

    我也试过dreamover(梦醒了)的方法,但是抛出的错误是不支持GB13080编码
      

  6.   

    jsp:
    <%@ page contentType ="text/html;charset=gb2312" %> 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> xml:
    <param-value>gb2312</param-value>
      

  7.   

    网页上默认的编码方式是ISO-8859-1
      

  8.   

    问题是我只想用utf-8编码,如果用gb2312,说不定问题早就解决了,因为我们以前一直用的是gb2312.
      

  9.   

    在接收页面数据之前设置request.setCharacterEncoding("UTF-8");试下
      

  10.   

    <init-param>
          <param-name>encoding</param-name>
          <param-value>GB13080</param-value>
        </init-param>
    那换成
    <init-param>
          <param-name>encoding</param-name>
          <param-value>GB2312</param-value>
        </init-param>
    这样呢,别的地方不用改,因为有可能提交过来的数据,在表单里输入的数据只能是用gb2312编码的,所以分析请求的时候不能按utf-8方式来分析
      

  11.   

    谢谢大家了!!我还是用这个好了:ss = new String(ss.getBytes("ISO-8859-1"),"UTF-8");