Mysql中文乱码解决思路和过程(二)

2014-11-24 10:32:57 · 作者: · 浏览: 2
------------
步骤二:改变Db characterset的编码方式,执行以下sql语句:
 --修改数据库编码为gbk
 alter database steven character set gbk; 
其中steven是数据表乱码所在的数据库,这个时候执行status查看
mysql> status;
--------------
mysql  Ver 14.12 Distrib 5.0.22, for Win32 (ia32)

Connection id:          2
Current database:       steven
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.0.22-community-nt
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    gbk
Db     characterset:    gbk
Client characterset:    gbk
Conn.  characterset:    gbk
TCP port:               3306
Uptime:                 8 min 30 sec

Threads: 1  Questions: 32  Slow queries: 0  Opens: 1  Flush tables: 1  Open tabl
es: 7  Queries per second avg: 0.063
--------------
此时都成为gbk的编码格式了。 注:如果此时数据库编码默认就为gbk的编码方式的,此时问题一般都已经解决了,如果还没有解决,在插入含有中文数据的时候会有以下异常:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'userName' at row 1
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3489)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
	at com.mysql.jdbc.P
reparedStatement.executeInternal(PreparedStatement.java:1734) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922) at com.steven.util.DaoHandle.executeDML(DaoHandle.java:49) at com.steven.dao.impl.UserDao.doCreate(UserDao.java:33) at com.steven.model.UserAddAction.execute(UserAddAction.java:80) at com.steven.controller.ActionServlet.doPost(ActionServlet.java:40) at javax.servlet.http.HttpServlet.service(HttpServlet.java:643) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.steven.util.EncodeFilter.doFilter(EncodeFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineva lve.invoke(StandardEngineva lve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) at org.apache.tomcat.util.net.J