请问如何解决mysql的中文乱码问题,小弟将my.ini中的编码改成gb2312还是乱码,不知道怎么搞了,求解啊

解决方案 »

  1.   

    要看乱码是在什么地方产生的!作为 JAVA 程序员需要自己学会调试!像你这样的一句话问题没法帮到你什么,给你提供一些建议自己找找吧。1:页面数据传入 Servlet 后输出一下,看看是否正确?
    2:在存入数据库之前再输出一下看看是否正确?
    3:提交后到数据库看看是否正确?
    4:从数据库中 SELECT 出来到 JAVA 代码后输出一下看看是否正确?你的问题出在哪一步呢?
      

  2.   

    我试了一下,表单变量传给jsp的时候,我用<jsp:setProperty >获取,存入JavaBean,然后再用javabean中的get方法得到变量的时候,显示的就是?,请问这个原因是出现在哪里啊
      

  3.   

    建表的时候
    DEFAULT CHARSET=UTF-8
      

  4.   

    现在的问题是在没有传到数据库是时候就乱码了,传到JavaBean的时候就有乱码
      

  5.   

    你把客户端的字符编码设置为GBK
      

  6.   

    首先你确定你的jsp中的编码格式要和你的mysql中设置的一致,这里建议lz使用utf-8编码格式,然后你使用你的jsp在网页上显示的不是乱码,这里给一个实例。<%@page contentType="text/html" pageEncoding="UTF-8"%>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    <body>  
     <br />
            <form action="/zhuce" method="post">
    学号:<input type="text" name="number" />
    *<font color="#999999">由数字和英文字母组成,长度6~10</font><br />
    <br />
    姓名:<input type="text" name="name" />
    *<font color="#999999">中文或英文</font><br />
             <br />
            <input type="submit" value="提交" />
    </form>            
    </body>
    </html>这个是servlet 中的dopost
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            String xuehao=request.getParameter("number");
            xuehao=new String(xuehao.getBytes("iso-8859-1"),"utf-8");//处理乱码的代码
            String name=request.getParameter("name");
            name=new String(name.getBytes("iso-8859-1"),"utf-8");   
            List<String> list=new ArrayList<String>();
            if(null==xuehao||xuehao.equals("")||xuehao.length()<6||xuehao.length()>10){
                list.add("学号长度不符合规格");
            }
           else if(name.equals(""))
            {
                list.add("*项没有添加完整");
            }
            else {
               request.setAttribute("xuehao", xuehao);
               request.setAttribute("name",name);        
               request.getRequestDispatcher("success2.jsp").forward(request, response);    
            }
            if(!list.isEmpty()){
                request.setAttribute("error", list);
                request.getRequestDispatcher("error2.jsp").forward(request, response);
            }
        }
    在确认网页上能正常显示后说明,现在你的jsp以及servlet中的编码都是utf-8,也就是解决了网页乱码的问题,再按照你开始的修改my.ini将默认的编码格式改成utf-8,在sql中运行show variables like 'character_set_%';
    当出现这样时,说明修改好了
    +--------------------------+---------------------------------------------------------+
    | Variable_name            | Value                                                   |
    +--------------------------+---------------------------------------------------------+
    | character_set_client     | utf8                                                    |
    | character_set_connection | utf8                                                    |
    | character_set_database   | utf8                                                    |
    | character_set_filesystem | binary                                                  |
    | character_set_results    | utf8                                                    |
    | character_set_server     | utf8                                                    |
    | character_set_system     | utf8                                                    |
    | character_sets_dir       | E:\Program Files\MySQL\MySQL Server 5.5\share\charsets\ |
    +--------------------------+---------------------------------------------------------
    然后重启mysql,你原来建的表在修改my.ini以后要重建,否则会出现错误。
      

  7.   

    以上说的都不行。我都试过了。只有重装mysql,然后在丁配置变量的时候,把默认的编码lain改为gbk或gb2312。这一步相当关键,否则的话,装完了,再改那些个编码,都无济于是。
      

  8.   

    乱码问题最好的办法就是把所有有关编码的部分都设置成一样的,要么是UTF-8,要么是GBK
      

  9.   

    都设置成utf-8了,但是还是乱码,很纠结啊
      

  10.   

    无语了,设置过滤器统一设置一下编码,是否post提交。
      

  11.   

    搞好了,就是在setProperty 之前写上<% request.setCharacterEncoding("UTF-8")%>就好了,各位晚安