这个问题已经玩了我一天了  网上搜的方法几乎都一样,照那些帖子做还是没用啊
一个小问题搞我这么久快崩溃了....以下是我的情况,大家帮我看看哪里有问题。
  
  tomcat是6.0的
  刚重装了下mysql 5.0,装完配置的时候指定新建数据库的字符集是utf8
  my.ini配置文件的修改:
[client] 后添加 default-character-set=utf8
[mysql] 和 [mysqld] 后的default-character-set也修改为utf8修改完毕重新启动mysql,进入mysql命令模式,用status;查看 编码信息,如下:
mysql> status;
--------------
C:\MySQL\bin\mysql.exe  Ver 14.12 Distrib 5.0.67, for Win32 (ia32)Connection id:          11
Current database:
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.0.67-community-nt MySQL Community Edition (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 5 min 56 secThreads: 3  Questions: 104  Slow queries: 0  Opens: 33  Flush tables: 1  Open ta
bles: 18  Queries per second avg: 0.292
--------------jsp页面<%@ page language="java" contentType="text/html; charset=utf-8"%>
    <%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
....
数据库操作类 获得数据库连接
DriverManager.getConnection("jdbc:mysql://localhost:3306/struts?user=root&password=565897&useUnicode=true&characterEncoding=utf-8");
数据库里varchar类型的字段都指定字符集是utf8为何还是乱码,哪里错了?

解决方案 »

  1.   

    配置文件utf8的地方都修改成了gbk 
    mysql重新启动
    status;命令显示已将所有编码改为gbk
    jsp页面utf-8的地方也改成了gbk
    debug显示actionForm得到 中文数据 的时候就已经是乱码了
      

  2.   

    数据库 和表的字段都新建了  编码都为gbk
      

  3.   

    1.form提交的方式(get or post)?2.传值方式(是否url重写)?3.是否使用spring框架?
      

  4.   

    使用的post提交
    就用的struts1.2,未使用spring框架传值方式(是否url重写)这个不明白问什么,可以举个笼统点的例子吗
      

  5.   

    可以把你的jsp代码贴上来吗?一起看看
      

  6.   

    注册事件的action
    public ActionForward execute(ActionMapping mapping, ActionForm actionFrom, HttpServletRequest request, HttpServletResponse response) throws Exception {
    UserInfo_Form form = (UserInfo_Form)actionFrom;//debug过了这里显示form里中文的值都是乱码了
    User_info user = new User_info();//用户对象,有登陆名称,密码,年龄等属性。
    BeanUtils.copyProperties(user,form.getUser());
    Sql_manager sqlm = new Sql_manager();
    sqlm.addUser(DB.getConn(), user);
    return mapping.findForward("success");
    }
      

  7.   

    原来是由于Struts框架直接把表单数据发送给了ActionForm,没有对HttpRequestServlet进行SetCharacterEncoding
    写了个filter中文出来了,数据库也没问题  谢谢大家
      

  8.   

    o
    那就好
    刚才在忙自己的项目
    其实还可以这样做:
    1.在struts-config.xml中加入一个拦截器:
    <controller processorClass="tools.RequestProcessorToUTF8"></controller>
    2.然后下面是拦截器的代码:public class RequestProcessorToUTF8 extends RequestProcessor { protected boolean processPreprocess(HttpServletRequest request,
    HttpServletResponse response) {
    try {
    request.setCharacterEncoding("utf-8");
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    return super.processPreprocess(request, response);
    }}
    希望对你有帮助。