myeclispe中向mysql中插入中文数据出现??问题解决办法

或许很多人会出现??这种令人头痛的mysql的中文乱码问题:解决如下:

1.先对于新建的数据库要设置默认的字符集为UTF-8

create database mydb default character set utf8 collate utf8_general_ci;

2.然后对于想对应的表进行设置默认字符集

CREATE TABLE IF NOT EXISTS `mydb` (
  `username` varchar(64) NOT NULL,
  `userid` int(11) NOT NULL,
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.最重要的一步在jdbc中的uri的地址中添加如下语句?characterEncoding=UTF-8设置字符集为UTF-8

jdbc:mysql://localhost:3306/db_name?characterEncoding=UTF-8

如下是一个例子:
regServlet.java

package cn.lonecloud.demo;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class RegServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        Connection conn=null;
        PreparedStatement prst=null;
        ResultSet rs=null;
        String db_driver="com.mysql.jdbc.Driver";
        String db_url="jdbc:mysql://localhost:3306/db_friend?characterEncoding=UTF-8";
        String db_user="root";
        String db_password="";
        String sql1="select * from userinfo where username=?";
        String sql2="insert into userinfo values(?,?)";
        try {
            String username=request.getParameter("userName");
            String userpass=request.getParameter("password");
            Class.forName(db_driver);
            conn=DriverManager.getConnection(db_url,db_user,db_password);
            prst=conn.prepareStatement(sql1);
            prst.setString(1, username);
            rs=prst.executeQuery();
            if (!rs.next()) {
                prst=conn.prepareStatement(sql2);
                prst.setString(1, username);
                prst.setString(2, userpass);
                int count=prst.executeUpdate();
                if (count!=0) {
                    HttpSession session=request.getSession();
                    session.setAttribute("username", username);
                    request.setAttribute("msg", "注册成功!");
                    request.getRequestDispatcher("index.jsp").forward(request, response);

                }else{
                    request.setAttribute("msg", "登录失败,密码错误!");
                    request.getRequestDispatcher("error.jsp").forward(request, response);

                }
            }else {
                    request.setAttribute("msg", "用户不存在!");
                    request.getRequestDispatcher("error.jsp").forward(request, response);

            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally{
            if (rs!=null) {
                try {
                    rs.close();
                } catch (Exception e2) {
                    // TODO: handle exception
                    e2.printStackTrace();
                }
            }
            if (prst!=null) {
                try {
                    prst.close();
                } catch (Exception e2) {
                    // TODO: handle exception
                    e2.printStackTrace();
                }
            }
            if (conn!=null) {
                try {
                    conn.close();
                } catch (Exception e2) {
                    // TODO: handle exception
                    e2.printStackTrace();
                }
            }
            out.close();
        }
    }

}

reg.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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">
<title>Insert title here</title>
</head>
<body>
    <h1>新用户注册</h1>
    <form action="RegServlet" method="post">
        <input type="text" name="userName"></br>
        <input type="password" name="password"></br>
        <input type="submit" id="btn_load">
    </form>
</body>
</html>

LoginFilter.java

package cn.lonecloud.demo;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginFilter implements Filter {
    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        //在过滤器中必须加入下面这两句话,不然会不能这样调用下面的方法
        HttpServletRequest req=(HttpServletRequest) request;
        HttpServletResponse resp=(HttpServletResponse)response;
        request.setCharacterEncoding("UTF-8");
        String path=req.getServletPath();
        HttpSession session=req.getSession();
        String username=(String)session.getAttribute("username");
        System.out.println(path);
        boolean b1=path.endsWith("login.jsp");
        boolean b2=path.endsWith("error.jsp");
        boolean b3=path.endsWith("LoginServlet");
        boolean b4=path.endsWith("RegServlet");
        boolean b5=path.endsWith("reg.jsp");
        boolean b6=(username!=null);
        if (b1||b2||b3||b4||b5||b6) {
            chain.doFilter(request, response);
        }else {
            resp.sendRedirect("error.jsp");
        }

    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

}
时间: 2024-12-14 18:51:22

myeclispe中向mysql中插入中文数据出现??问题解决办法的相关文章

解决mysql无法插入中文数据及插入后显示乱码的问题

(1)废话不多说就是使用mysql数据库的时候无法输入中文,可以输入中文后显示的又是乱码!! (2开始解决问题: 第一步:找到安装mysql的目录找到 my.ini 文件: 第二步:使用记事本打开my.ini文件 , 找到这个地方 看看default-character-set 是不是 utf8不是的话 改为utf8即可 1 # MySQL client library initialization. 2 [client] 3 port=3306 4 [mysql] 5 default-char

python 向MySQL里插入中文数据

用python向MySQL中插入中文数据出错,原代码片段: 1 db = MySQLdb.connect("localhost","root","123","TESTDB") 2 cursor = db.cursor() 3 sql = '''INSERT INTO aaaa(bb,cc) values(%s , %s)''' 4 5 data = ("山东","威海") 6 curso

mysql数据库存储中文数据的解决办法

我在学习django中admin模块的时候,登录进入后台操作页面,输入中文数据,但保存之后全是乱码(全是“????????????”),然后就开始了解决问题之路. 1.首先百度搜索,最主流的方法也是一劳永逸的方法是:修改MySQL的配置文件my.ini.我也是按照这个方法做的,只是搜索出来的方法不详细,或者说不适合MySQL的新版本. 2.在MySQL根目录下寻找my.ini配置文件,然而我装的是MySQL-5.6.30,在根目录下只找到了my-default.ini文件.把my-default

mysql,用存储过程插入中文导致乱码问题解决办法

DELIMITER $$ USE `u2_test10`$$ DROP PROCEDURE IF EXISTS `Pro_apply`$$ CREATE DEFINER=`root`@`%` PROCEDURE `Pro_apply`(IN aid INT,IN uid INT,IN reas CHAR(50) CHARACTER SET utf8)//char(50) 这只urf-8BEGIN DECLARE score INT; SELECT COUNT(*) INTO score FROM

mysql中插入中文数据

今天遇到的问题使mysql中插入中文数据后显示乱码,我在mysql中插入中文的时候,可以插入可是select的时候却无法显示,为此我写下这篇博客用于解决mysql插入中文. 由于有些截图没有记录下来,但是为了说明问题,我借用了别人的图,主要是为了完整的描述问题,在没有任何修改的时候,我们可以在mysql命令行中敲入以下指令,其结果如下所示: show variables like 'character%'; 可以看到,以上的编码并不支持中文,所以我们需要改变他们的编码(我这里是改成了utf8格式

EF 连接MySQL 数据库 ?保存中文数据后乱码问题

EF 连接MySQL 数据库  保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的图),否则插入的数据,就会全部变成乱码 修改后可以正常插入数据(注意!!这里是直接用SQL 代码插入的数据) 之后用代码界面保存数据,如图 但数据中却变成乱码: 修改方法: 在连接MySQL的连接字符串中,加入配置文件信息:Character Set=utf8  来自为知笔记(Wiz)

SQL Server插入中文数据后出现乱码

原文:SQL Server插入中文数据后出现乱码 今天在做项目的过程中遇到如标题的问题,情况如下图: 数据库使用的是SQL Server2012版本,创建表的脚本如下: CREATE TABLE [dbo].[Type](  [TypeId] INT NOT NULL PRIMARY KEY,     [TypeName] NVARCHAR(50)NOT NULL,     [Description] NVARCHAR(255) NULL,     [CategoryId] INT NOT NU

MySQL无法插入中文的解决方案

本人在做数据库的连接过程中,发现无法插入中文值.原因是mysql的默认编码是latin1,只须将编码改为utf8即可. 在mysql的命令行窗口中输入 status 会出现当前的编码.在mysql的安装目录中找到my.ini文件,将latin1替换为uft8,并在命令行中输入 set chatset 'uft8' 重启mysql服务. 再输入命令status,看到如下图:

MySQL数据库插入中文时出现Incorrect string value: &#39;\xE6\x97\xB7\xE5\x85\xA8&#39; for column &#39;sz_name&#39; at row 1

今天在开发时候出现了这个问题 Incorrect string value: '\xE6\x97\xB7\xE5\x85\xA8' for column 'sz_name' at row 1 场景,往MySQL数据库的表中插入中文参数,抛出了这个异常 我用sqlyog执行该段代码时候发现只是出现警告,并没有出现error,但是在代码里面执行抛出了异常,说明管理工具sqlyog对有些约定不是那么严格,而代码中就会报错.提醒自己,以后写sql时候不能忽略管理工具中出现的警告. 解决方案: 在用sql