zoukankan      html  css  js  c++  java
  • 自己的mysql乱码问题解决

    虽然解决不过还是有疑惑的地方

    解决方案:

    在安装目录下找到my.ini这个文件,将client和server的字符设置都改为gbk

    这样就好了

    用 SHOW VARIABLES LIKE 'character_set_%';命令查看字符设置 我的修改后为:

    | character_set_client     | gbk
         |
    | character_set_connection | gbk
         |
    | character_set_database   | gbk
         |
    | character_set_filesystem | binary
         |
    | character_set_results    | gbk
         |
    | character_set_server     | gbk
         |
    | character_set_system     | utf8

    这样修改后 试验:

    创建数据库 表:

    create database java;

    use java;

    CREATE TABLE person
    (
        id varchar(20) not null primary key ,
        name varchar(20) ,
        password varchar(20)
    ) ;

    INSERT INTO person VALUES ('helle','你好','zzzzzz') ;

    commit;

    登陆界面:;login.jsp:

    Code
    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

    <html>
        
    <head>
            
    <title>jsp+jdbc test</title>
        
    </head>

        
    <body>
            
    <center>
                
    <h1>
                    
    ---jsp+jdbc
                
    </h1>
            
    </center>
            
    <hr>
            
    <br>
            
    <%
                
    if (session.getAttribute("uname"!= null) {
                    
    //说明用户已经登陆
            %>
            
    <h2>
                登陆成功
            
    </h2>
            
    <h2>
                欢迎
    <%=session.getAttribute("uname")%></h2>
           
            <%
                } 
    else {
                    
    //用户未登陆,提示用户登陆并跳转到登陆界面
                    response.setHeader("refresh""2;URL=login.jsp");
            
    %>
            您还未登陆,请先登陆!!!
            
    <br>
            两秒钟后自动跳转到登陆界面!
            
    <br>
            如果没有跳转请点击
            
    <a href="login.jsp">这里</a>

            
    <%
                }
            
    %>
        
    </body>
    </html>

    验证界面:login_conf.jsp:

    Code
    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
    <%@ page import="java.sql.*"%>

    <html>
        
    <head>
            
    <title>jsp+jdbc test</title>
        
    </head>

        
    <body>
            
    <center>
                
    <h1>
                    jsp
    +jdbc tst
                
    </h1>
                
    <hr>
                
    <br>
                
    <%!String DBDRIVER = "com.mysql.jdbc.Driver";
        
        String URL 
    = "jdbc:mysql://localhost/java";
        String DBUname 
    = "root";
        String DBpassword 
    = "aaa";
        Connection conn 
    = null;
        PreparedStatement pstmt 
    = null;
        String sql 
    = null;
        ResultSet rs 
    = null;%>

                
    <%
                    
    // 声明一个boolean变量,用于保存用户是否合法的状态
                    boolean flag = false;
                    
    //接受参数
                    String id = request.getParameter("id");
                    String password 
    = request.getParameter("password");
                
    %>
                
    <%
                    sql 
    = "select * from person where id=? and password=?";
                    
    try {
                        Class.forName(DBDRIVER).newInstance();
                    } 
    catch (Exception e) {
                        out.println(
    "加载驱动错误");
                    }
                    
    try {
                        conn 
    = java.sql.DriverManager.getConnection(URL, DBUname,
                                DBpassword);
                                
                                
                    } 
    catch (Exception e) {
                        out.println(
    "连接错误");
                    }
                    
    try {
                        pstmt 
    = conn.prepareStatement(sql);
                        pstmt.setString(
    1, id);
                        pstmt.setString(
    2, password);
                        rs 
    = pstmt.executeQuery();
                        
    if (rs.next()) {
                            
    //用户合法
                            
                            flag 
    = true;
                            
    //将用户名保存在session中
                            session.setAttribute("uname", rs.getString(2));
                        } 
    else {
                            
    //保存错误信息    
                            request.setAttribute("err""错误的用户名和密码");
                        }
                        rs.close();
                        pstmt.close();
                        conn.close();

                    } 
    catch (Exception e) {
                        out.println(
    "操作失败");
                    }
                
    %>
                
    <%
                    
    //跳转
                    if (flag) {
                        
    //用户合法
                %>
                
    <jsp:forward page="login_success.jsp"></jsp:forward>

                
    <%
                    }
                    
    //用户非法
                    else {
                
    %>
                请登陆
    <jsp:forward page="login.jsp"></jsp:forward>

                
    <%
                    }
                
    %>
            
    </center>


        
    </body>
    </html>

    成功页面:login_success.jsp:

    Code
    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

    <html>
        
    <head>
            
    <title>jsp+jdbc test</title>
        
    </head>

        
    <body>
            
    <center>
                
    <h1>
                    jsp
    +jdbc test
                
    </h1>
            
    </center>
            
    <hr>
            
    <br>
            
    <%
                
    if (session.getAttribute("uname"!= null) {
                    
    //说明用户已经登陆
            %>
            
    <h2>
                登陆成功
            
    </h2>
            
    <h2>
                欢迎
    <%=session.getAttribute("uname")%></h2>
            

            
    <%
                } 
    else {
                    
    //用户未登陆,提示用户登陆并跳转到登陆界面
                    response.setHeader("refresh""2;URL=login.jsp");
            
    %>
            您还未登陆,请先登陆!!!
            
    <br>
            两秒钟后自动跳转到登陆界面!
            
    <br>
            如果没有跳转请点击
            
    <a href="login.jsp">这里</a>

            
    <%
                }
            
    %>
        
    </body>
    </html>

    不过不明白的地方还是很多的:我只是修改了数据库中的编码 是用gbk来存了,可是在程序中我也没有写类似过滤器的代码,

    以前我还在程序页面开头 加了:

    <%
        request.setCharacterEncoding("gb2312");
        response.setCharacterEncoding("gb2312");  
    %>

    发现把这两句都删了 在成功页面还是能取出中文字符的

    不知道为何 ?

    今天可能明白一点了,写下:

    request.setCharacterEncoding("gb2312");是设置用户jsp界面向服务器提交中文时用的。

    上面的之所以去掉没有什么变化是因为:我们没有从jsp中提交数据,我们只是从数据库中读取了数据,在mysql5.0中设置好了 编码gbk后 自动就会在连接url中添加设置编码为gbk

    到目前 估计对这个编码问题理解的还好了一点 了吧

  • 相关阅读:
    执行超过1个小时的SQL语句
    非周一回写销售预测
    openLDAP
    Windows下使用性能监视器监控SqlServer的常见指标
    ORA-01720: grant option does not exist for 'xxx.xxxx' (ORA-01720 ‘XXX’ 不存在授权选项)
    117 FP页面无法查看 此错误是JDK8.0.0.0版本的一个BUG,会导致工单重复回写,
    KPI
    Quatrz + Spring
    windows 脚本
    Spring集成Redis
  • 原文地址:https://www.cnblogs.com/zhxiaomiao/p/1424315.html
Copyright © 2011-2022 走看看