兄弟们,我也遇到这种情况,我用的是
数据库:MySql5.01
Web容器:Tomcat5.5
开发工具:MyEclipse5.5
构架:Struts1.2+Hibernate3.1+XHTML
--------------
配置情况:
(1).已加入过滤器com.util.SetCharacterEncodingFilter
web.xml配置如下<!--中文编码过滤器-->
<filter>
   <filter-name>Set Character Encoding</filter-name>
   <filter-class>com.util.SetCharacterEncodingFilter</filter-class>
   <init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
  </init-param>
  <init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
  </init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>action</servlet-name><!-- 过滤所有的action类 -->
</filter-mapping>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern><!-- 过滤所有的jsp页面 -->
</filter-mapping>
(2).连接数据时已经设置了
jdbc:mysql://127.0.0.1:3306/YDKT?useUnicode=true&amp;characterEncoding=UTF-8
(3).jsp页面也设置了
<?xml version="1.0" encoding="utf-8"?>
<%@ page contentType="text/html; charset=utf-8" language="java"%>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
信息
</title>
</head>
(4).Struts控制器取表单数前也设置了
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");####但问题出现了????????????????########
新增数据时取到的中文一切正常,入库也正常,显示到页面上也正常,当点击修改时明明取到的中文不是乱码,Tomcat控制台打印出来的也是正常的中文也是正常的(如:name====你死我活
修改hql====update SoundChatRight set nickname='你死我活' where id=:id),入库后却是乱码,显示到页面上的也是乱码,搞了两天还没有搞定.真是郁闷!!兄弟们,救救我吧.急呀.

解决方案 »

  1.   

    在mysql.ini文件中找到"default_character_set=lat1",改成"default_character_set=gb2312".须重启mysql,否则无效。
    ====================================
    因为入库是乱码,显示出来的岂能不是乱码呢?
      

  2.   

    首先,页面的编码格式是否和你需要的编码格式一致。
    (<meta http-equiv="Content-Type" content="text/html; charset=utf-8">)
    其次,处理页面的编码格式也要和你页面的编码格式一致。
    (文件另存为编码选择 UTF-8)最后,入库时,是否已经转码,转的码和你的页面编码格式要一致。
    ( mysql_query("SET NAMES 'utf8'",$link); )总之,编码格式要求一致,如果哪一个环节不一致,就会发生此问题。
      

  3.   

    存入数据不乱码的最简单的方法:
    1、确保你创建的数据库中的每一个字段的字符集为gbk;
    2、在插入语句(即 insert into)之前,加上 : mysql_query("set names 'gbk'");按照上面的步骤,就不会乱码
      

  4.   


    看一下这里吧:http://blog.chinaunix.net/u/29134/showart_390526.html
      

  5.   

    这是我机子上的路径:
    你可以按照以下步骤做:
    1.修改C:\Program Files\MySQL\MySQL Server 5.0里面的my文件:
     
    修改如下:
    default-character-set=utf8
    2.修改D:\jboss-4.0.2_exp\server\default\deploy\jbossweb-tomcat55.sar里面的server.xml文件:
          
    修改如下:
         <!-- A HTTP/1.1 Connector on port 8080 -->
          <Connector port="8080" address="${jboss.bind.address}"
             maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
             emptySessionPath="true"
             enableLookups="false" redirectPort="8443" acceptCount="100"
             connectionTimeout="20000" disableUploadTimeout="true"
             URIEncoding="UTF-8"/>
    3.修改D:\jboss-4.0.2_exp\server\default\deploy里面的mysql-ds文件:修改如下:
              <datasources>
      <local-tx-datasource>
        <jndi-name>MySqlDS</jndi-name>
        <connection-url>jdbc:mysql://192.168.0.189/zp</connection-url>
    <connection-property name="characterEncoding">utf8</connection
    property>
    <driver-class>com.mysql.jdbc.Driver</driver-class>  
       <!--  <driver-class>org.gjt.mm.mysql.Driver</driver-class>  -->4。修改当前项目中的WEB-INF文件,例如:
     我的机子上的 D:\jboss-4.0.2_exp\server\default\deploy\zpxx.war\WEB-INF里面的web.xml文件:
    修改如下:
             <?xml version="1.0" encoding="utf8"?>试试吧!