上次测试使用hibernate,遇到了中文的乱码问题,今天在web中使用hibernate又遇到了乱码的问题。但是上次解决后没有把解决方案记录下来,今天重新上网搜索了一把。并将解决方案记录在下面便于以后再遇到时查看用。
Hibernate中配置Mysql数据库如下:
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class org.gjt.mm.mysql.Driver
#hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost:3306/test
hibernate.connection.username root
hibernate.connection.password password
在hibernate.commection.url的值后面加上字符串“?useUnicode=true&characterEncoding=GBK”就可以解决了。
即修改后的url为:
hibernate.connection.url jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK
Hibernate还有一种配置文件是xml格式的,文件名为:hibernate.cfg.xml
在xml文件中配置MySql数据库的定义如下:
<session-factory name="/jndi/ContactsSessionFactory">
<!-- properties -->
<property name="hibernate.connection.driver_class">
org.gjt.mm.mysql.Driver
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.dialect">
net.sf.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.pool_size">4</property>
<property name="hibernate.show_sql">true</property>
<!-- mapping files -->
<mapping resource="hello/Message.hbm.xml"/>
</session-factory>
注意由于在XML文件中&符号是转义符,因此需要对其进行转义。即使用&来代替。
JSP连接MYSQL数据库如果有中文存取的情况会出现乱码,网页上中文显示一堆“?“,
需要做如下改变
1. 连接串:
String mysqlDriver = "org.gjt.mm.mysql.Driver"; //数据库驱动,又作"com.mysql.jdbc.Driver"
String mysqlUrl = "jdbc:mysql://localhost:3306/bbs?useUnicode=true&characterEncoding=gb2312"; //数据库连接字串
String mysqlUser = "root"; //数据库用户名
String mysqlPsw = ""; //数据库密码
Class.forName("org.gjt.mm.mysql.Driver").newInstance(); //注册驱动
conn = DriverManager.getConnection(mysqlUrl,mysqlUser,mysqlPsw); //得到连接
2.请求对象设置:
<% request.setCharacterEncoding("gb2312");%>
将jsp的请求对象的字符集设置为支持中文
这中方法还没用过,先收藏起来,有空的时候研究一下。