没事无聊写S2H玩,遇到乱码问题。。。

最近都比较闲,写个Struts2+Hibernate的CRUD玩玩,我好久没有写自己能看得懂的java代码了。。。新手的悲哀~写S2H基本上都是一顿配置,写点业务层的增删改查方法就好了,写起来也比较顺手,一会儿就写完了(大概一个多小时~,不要笑我!)tomcat部署一下试试效果,注册用户。。。查看注册后的用户列表,乱码了~为什么呢?为什么呢?这个问题以前写项目玩的时候也出现过,不过好久远了,我不知道是哪种原因~

页面没有用统一的编码?页面的编码与数据库的编码格式不一致?表单传入的值是不是就已经是乱码了?是不是插入数据库正常但是从数据库读取时候产生乱码?在web.xml中加个过滤器试试?

页面都使用了统一的编码UTF-8,页面传入到action中获得的表单值没有问题,加了过滤器,还是乱码!!!

慢慢找出问题出现在哪块,我修改了数据库中一条数据,页面读取不显示乱码,那么问题就出现在往数据库中插入数据了,我用的是mysql数据库,mysql数据的编码机制是怎么回事?上网搜搜~

MySQL的编码机制:

1、数据库级别的编码:数据库服务器上允许建立不同编码的数据库,在数据库建立时需要指定编码;(这个我没有设置。。。)

2、表级别的编码:同一个数据库中可以建立不同编码的表,在表建立时需要指定编码,默认为用户连接时的编码;

我的建表语句:

CREATE TABLE `users` (
  `Id` int(11) NOT NULL auto_increment,
  `username` char(20) default NULL COMMENT '登录帐号',
  `password` char(20) default NULL COMMENT '登录密码',
  `birthday` date default NULL COMMENT '出生日期',
  `phone` char(20) default NULL COMMENT '联系电话',
  `address` varchar(100) default NULL COMMENT '联系地址',
  `email` varchar(100) default NULL COMMENT 'email',
  `regdate` datetime default NULL COMMENT '注册时间',
  PRIMARY KEY  (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COMMENT='用户表';

设置默认的建表编码为gb2312~

3、表字段级别的编码:同一个表中可以建立不同编码的字段,默认为表的编码,要对字段指定特殊的编码,必须在字段中明确指定编码格式;(这个没有影响)

4、建立数据库连接时的编码:用户可以在建立数据库连接时指定编码,默认为服务器的配置。(这块?我的driveURL?去看看配置文件~)

在hibernate.cfg.xml文件中原来的数据库连接配置爱信息:

<hibernate-configuration>

 <session-factory>
  <property name="dialect">
   org.hibernate.dialect.MySQLDialect
  </property>
  <property name="connection.url">
   jdbc:mysql://localhost:3306/bjsl
  </property>
  <property name="connection.username">root</property>
  <property name="connection.password">root</property>
  <property name="connection.driver_class">
   com.mysql.jdbc.Driver
  </property>
  <property name="myeclipse.connection.profile">bjsl</property>
  <mapping resource="po/Users.hbm.xml" />

 </session-factory>

</hibernate-configuration>

黑体字部分没有指定编码,那就指定一下:

<property name="connection.url">
  <![CDATA[
   jdbc:mysql://localhost:3306/bjsl?useUnicode=true&characterEncoding=GB2312
   ]]>
  </property>

再去重新启动一下tomcat,ok!原来是这块有毛病!

哎,我真得好好去复习复习一下以前学过的东西了,且不说写个增删改查出现问题了,写个这么个东西花了我两三个小时,这速度,这效率,弱爆了!

你可能感兴趣的:(Web,mysql,乱码,S2H)