hibernate 中文问题(高分)

kofsky 2005-11-13 09:02:12
操作系统是 win2000,编码GBK
JDK 1.5
数据库 MySQL 5.0,字符编码 latin1

测试hibernate2时配置文件如下:

<?xml version='1.0' encoding='GBK'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<hibernate-configuration>

<session-factory>

<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="connection.url">
jdbc:mysql://localhost:3306/db_app?useUnicode=true&characterEncoding=iso_8859_1
</property>

<property name="connection.useUnicode">true</property>

<property name="connection.characterEncoding">iso_8859_1</property>

<property name="connection.username">kofsky</property>

<property name="connection.password">kofsky</property>

<mapping resource="user.hbm.xml"/>

</session-factory>

</hibernate-configuration>

为什么写入数据库的时候,中文为乱码?

我在用JDBC的时候,中文问题可以解决的很好啊。就是写入时转为iso_8859_1,读出时转化为gbk 。按道理说,hibernate设置编码为iso_8859_1时,是能够正确写入的嘛。

多谢了。
...全文
311 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kofsky 2005-11-18
  • 打赏
  • 举报
回复
用UTF-8可以
读取出来显示在JSP上为正常的中文
但是在MySQL下却为乱码

miaoliujun 2005-11-15
  • 打赏
  • 举报
回复
你将数据库的编码设置为UTF-8
将hibernate连接的配置也设置为UTF-8就应该没问题了
clcpxq 2005-11-14
  • 打赏
  • 举报
回复
你先看一下你的数据是不是在add到数据库之前都是中文,就是到数据库才变成乱码的,如果add之前就是乱码,那就很简单了。如果不是这样,你在web.xml中把过滤器给注释掉,再试试。
kofsky 2005-11-14
  • 打赏
  • 举报
回复
恩,是啊。数据库如果采用UTF-8编码,那么hibernate就需要把编码设置为UTF-8,或者设置过滤器。
我现在数据库的编码是iso_8859_1,那么hibernate设置为iso_8859_1应该是合理的塞。
但还是乱码。

晕噢。怎么回事呢。
zeq258 2005-11-14
  • 打赏
  • 举报
回复
首先数据库的编码,和我们页面的编码是不一样的。

通常,数据库采用UTF-8编码,而页面通常采用gbk或者gb2312,

那么在把数据库的数据,显示在页面以前,需要把UTF-8转化为gbk或者gb2312.

kofsky 2005-11-14
  • 打赏
  • 举报
回复
这里有一篇讲述JSP/Servlet对中文编码的文章

http://tech.sina.com.cn/s/s/2004-11-15/1403459384.shtml

我觉得还比较透彻了。
可惜不能解决这个hibernate的问题。
clcpxq 2005-11-14
  • 打赏
  • 举报
回复
形成乱码的原因非常多,你可以看一下我以前问的问题,
http://community.csdn.net/Expert/topic/4377/4377463.xml?temp=2.994937E-02
开始显示的是乱码,写进的也是乱码,
我的解决就是先去掉过滤器结果写入就正常了,但是显示还是乱码。
后来我把JSP脑袋上的<%@ page contentType="text/html; charset=GBK" pageEncoding="GBK"%>改成<%@ page contentType="text/html;" language="java"%>就都正常了,也就是说,我去掉了过滤器和JSP脑袋。后果就是,在集成IDE上面,自己写的中文全变成乱码,也就是说,JSP页面要用EditPlus开发。这我也不知道为什么?!
kofsky 2005-11-14
  • 打赏
  • 举报
回复
过滤器去掉了啊。
我测试过过滤器,但是没用好,只好去掉了。

谢谢你噢,clcpxq(风卷残云)
clcpxq 2005-11-14
  • 打赏
  • 举报
回复
你把过滤器去掉了吗?有时候就是过滤器的是,上次我也是这样。
kofsky 2005-11-14
  • 打赏
  • 举报
回复
输入到数据库之前是中文的了。现在我把数据库的编码格式和表的编码格式也都重新设置了一遍,全部设成latin1。
配置文件添加了:
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">iso_8859_1</property>

还是不行。
晕了。。。晕。。。。
Octer 2005-11-13
  • 打赏
  • 举报
回复
数据库GBK也面也用GBK肯定没问题
kofsky 2005-11-13
  • 打赏
  • 举报
回复
我以前的应用程序都是通过JDBC写的,都还正常,因此JDBC应该没啥问题。

非常感谢你的回答。
liu_you 2005-11-13
  • 打赏
  • 举报
回复
换成Mysql4试试?不知道是不是因为jdbc驱动的问题.
kofsky 2005-11-13
  • 打赏
  • 举报
回复
我按照网上的方法,测试了许多次了。
把hibernate2按照GBK,或者UTF-8编码时,结果也还是乱码。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧