Perhaps a lot of people will appear?? This headache of MySQL's Chinese garbled problem: resolved as follows:
1. Set the default character set to UTF-8 for the newly created database first
Create Database default character set UTF8 collate utf8_general_ci;
2. Then set the default charset for the table you want to correspond to
CREATE TABLE IF not EXISTS ' MyDB ' ( varchar(notNULL ,int( One not NULL , ) ENGINE=DEFAULT CHARSET=UTF8;
3. The most important step is to add the following statement to the address of the URI in JDBC? Characterencoding=utf-8 sets the character set to UTF-8
Jdbc:mysql://localhost:3306/db_name?characterencoding=utf-8
Here is an example:
Regservlet.java
PackageCn.lonecloud.demo;Importjava.io.IOException;ImportJava.io.PrintWriter;Importjava.sql.Connection;ImportJava.sql.DriverManager;Importjava.sql.PreparedStatement;ImportJava.sql.ResultSet;Importjavax.servlet.ServletException;ImportJavax.servlet.http.HttpServlet;Importjavax.servlet.http.HttpServletRequest;ImportJavax.servlet.http.HttpServletResponse;Importjavax.servlet.http.HttpSession; Public classRegservletextendsHttpServlet { Public voiddoget (httpservletrequest request, httpservletresponse response)throwsservletexception, IOException {response.setcontenttype ("Text/html"); PrintWriter out=Response.getwriter (); DoPost (request, response); } Public voidDoPost (httpservletrequest request, httpservletresponse response)throwsservletexception, 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); intCount=prst.executeupdate (); if(count!=0) {HttpSession session=request.getsession (); Session.setattribute ("Username", username); Request.setattribute ("MSG", "Registered successfully!" "); Request.getrequestdispatcher ("Index.jsp"). Forward (request, response); }Else{Request.setattribute ("MSG", "Login failed, password error!" "); Request.getrequestdispatcher ("Error.jsp"). Forward (request, response); } }Else{Request.setattribute ("MSG", "User does not exist!" "); Request.getrequestdispatcher ("Error.jsp"). Forward (request, response); } } Catch(Exception e) {//Todo:handle ExceptionE.printstacktrace (); }finally{ if(rs!=NULL) { Try{rs.close (); } Catch(Exception E2) {//Todo:handle ExceptionE2.printstacktrace (); } } if(prst!=NULL) { Try{prst.close (); } Catch(Exception E2) {//Todo:handle ExceptionE2.printstacktrace (); } } if(conn!=NULL) { Try{conn.close (); } Catch(Exception E2) {//Todo:handle ExceptionE2.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" >
Loginfilter.java
PackageCn.lonecloud.demo;Importjava.io.IOException;ImportJavax.servlet.Filter;ImportJavax.servlet.FilterChain;ImportJavax.servlet.FilterConfig;Importjavax.servlet.ServletException;Importjavax.servlet.ServletRequest;ImportJavax.servlet.ServletResponse;Importjavax.servlet.http.HttpServletRequest;ImportJavax.servlet.http.HttpServletResponse;Importjavax.servlet.http.HttpSession; Public classLoginfilterImplementsFilter {@Override Public voiddestroy () {//TODO auto-generated Method Stub} @Override Public voidDoFilter (servletrequest request, servletresponse response, Filterchain chain)throwsIOException, servletexception {//The following two sentences must be added to the filter, otherwise you will not be able to invoke the following methodHttpServletRequest 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); BooleanB1=path.endswith ("login.jsp"); BooleanB2=path.endswith ("error.jsp"); BooleanB3=path.endswith ("Loginservlet"); BooleanB4=path.endswith ("Regservlet"); BooleanB5=path.endswith ("reg.jsp"); BooleanB6= (username!=NULL); if(b1| | b2| | b3| | b4| | b5| |b6) {Chain.dofilter (request, response); }Else{resp.sendredirect ("Error.jsp"); }} @Override Public voidInit (Filterconfig arg0)throwsservletexception {//TODO auto-generated Method Stub } }
Myeclispe the insertion of Chinese data into MySQL? Problem-solving approach