终于解决了MySql5.0.22的中文乱码问题

被乱码折磨两天余,终于解决了MySql5.0.22的中文乱码问题

我也要发原创啦。    嘎嘎嘎嘎

症状:在mysql的命令行窗口和在浏览器窗口运行web项目时中文都显示为问号,郁闷。查阅N多资料

运行环境是myeclipse8.0(默认为gbk编码)+mysql 5.0.22(默认编码为latin1+jsp+增删改查web项目+jdbc+ mysql-connector-java-3.1.11-bin.jar+winxp

页面和jsp都声明使用utf-8

大致的思路:把web项目涉及的几个方面的编码都统一起来,

最终结果:在mysql的命令行窗口中可以正常显示中文,浏览器运行web项目时也可以正常显示中文 ,哦耶,大功告成

把基本代码列出来(注意粗体蓝色部分):

1.       mysql中建表:

create table test_table

              (id int(10) unsigned auto_increment primary key,

              name varchar(50) not null ,

              amount int(10) not null,

              price double(11,2),

               info text)ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;

2.       部分jsp页面:

<%@page pageEncoding="utf-8" %>这句是制定客户端的浏览器以什么字符查看本页面

<%@page import="java.sql.*"%>

<%@include file="validate.jsp" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

    <head>

       <title></title>

       <META http-equiv=Content-Type content="text/html; charset=utf-8">

       <link rel="stylesheet" type="text/css" href="css/style.css" />

3.       </head>

<%

       Class.forName("com.mysql.jdbc.Driver");

       Connection con = DriverManager.getConnection(

               "jdbc:mysql://localhost:3306/beatit?useUnicode=true&characterEncoding=UTF-8"(这个参数所有连接都不能少)

, "root"

,"mysql");

 

       Statement stmt = con.createStatement();

       ResultSet rs = stmt.executeQuery("select id,name,amount,price from test_table ");

       System.out.println(rs);

    %>

    <body>

       <div id="wrap">

           <div id="top_content">

              <%@include file="header.jsp"%>

              <div id="content">

                  <p id="whereami">

                  </p>

                  <h1>

                     欢迎你!

                  </h1>

                  <table class="table">

                     <tr class="table_header">                        

                         <td>

                            编号

                         </td>

                         <td>

                            名称

                         </td>

                         <td>

                            数量

                         </td>

                         <td>

                            单价

                         </td>

                     </tr>

 

                     <%

                     int n = 0;

                      while(rs.next()) {

                     %>

 

                     <tr class="row<%=n++%2+1%>">

                         <td>

                            <%=rs.getString(1)%>

                         </td>

                         <td>

                            <%=rs.getString(2)%>

                         </td>

                         <td>

                            <%=rs.getString(3)%>

                         </td>

                         <td>

                            <%=rs.getString(4)%>

                         </td>

                     </tr>

  ......

 

 4,登陆MySql,"select * from test_table"来查看记录,如果发现还是乱码的话,应该在winxpcmd黑窗口这样登陆MySql:

  mysql --default-character-set=utf8 -u root -p

查看mysql数据库的编码格式的命令

  show variables like 'character%';

+--------------------------+--------+

| Variable_name | Value |

+--------------------------+--------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1|

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | latin1|

| character_set_system | latin1 |

+--------------------------+--------+

 

5jsp之间用表单传递参数(提交方式post)时,获取数据的jsp也要将resultset设置为utf8

request.setCharacterEncoding("utf-8");

结果:在mysql的命令行窗口中的显示由问号变成了乱码,但是在浏览器运行web项目时可以正常显示中文

最后改用命令mysql --default-character-set=gb2312 -u root –p(把数据库的编码格式改为gb2312)重新登陆后就可以在zmysql的命令行窗口中显示中文了,

而且在浏览器运行web项目时也可以正常显示中文

 

总结:

1.       建表、jsp页面、jdbc数据库连接以及jsp页面之间传递参数时的编码格式都要一致就可以啦,而mysql数据库里要是想显示中文就要使用gb2312,我的默认

Latin1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值