浏览 13043 次
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-06-02
众所周知,com.mysql.jdbc.Connection的构造函数public java.sql.Connection connect(String url, Properties info)会在构造的时候接受一个Properties型的参数,其中的“useUnicode”和“characterEncoding”决定了它是否在客户端和服务器端传输过程中进行Encode,以及如何进行Encode。详细可参见private void checkServerEncoding()方法。 Hibernate使用net.sf.hibernate.cfg.Environment来存储系统级的所有属性,而用net.sf.hibernate.cfg.Settings来存储Hibernate的设定。 但是net.sf.hibernate.cfg.Environment里保存的Properties不是直接提供给com.mysql.jdbc.Connection使用的。 net.sf.hibernate.connection.ConnectionProviderFactory会在public void configure(Properties props)中使用用public static Properties getConnectionProperties(Properties properties)方法进行筛选。 带有特定前缀public static final String CONNECTION_PREFIX = "hibernate.connection"并且没有被放到private static final Set SPECIAL_PROPERTIES里的属性才会被留下来。 然后,它在public Connection getConnection()中建立连接的时候使用的是它自己筛选完之后的private Properties connectionProps属性。 所以答案就很明显了。 使用hibernate.cfg.xml的话,在<session-factory>和</session-factory>之间加入这么一段: <property name="connection.useUnicode">true</property> <property name="connection.characterEncoding">UTF-8</property> 如果是些程序的话,在创建完net.sf.hibernate.cfg.Configuration、并使用configure()读取完配置文件之后,buildSessionFactory()之前,执行如下代码: Properties extraProperties = new Properties();; extraProperties.put("hibernate.connection.useUnicode", "true");; extraProperties.put("hibernate.connection.characterEncoding", "UTF-8");; myConfiguration.addProperties(extraProperties);;OK!万事大吉了! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-06-02
在blogdriver上老是发布不了,只好先发到这里来了。
呵呵,第一次发帖,请大家多多指教。 m(__)m |
|
返回顶楼 | |
发表时间:2004-06-02
直接写在connection url后面也可以
|
|
返回顶楼 | |
发表时间:2004-06-02
嗯?
我试过写在url里,但是没有作用,不知道为什么。 :( |
|
返回顶楼 | |
发表时间:2004-06-02
我用的是mysql-connector-java-3.0.9-stable-bin.jar。
也许是版本太老了? |
|
返回顶楼 | |
发表时间:2004-06-02
你的Hibernate配置文件使用xml格式吗?试试看把connection url后面的 & 符号用xml转义符替代试试看,或者用<![CDATA[]]>也行。
|
|
返回顶楼 | |
发表时间:2004-06-03
果然如此!谢谢Quake Wang指点!!
唉,看来我又干了一遍发明轮子的蠢事…… ToT |
|
返回顶楼 | |
发表时间:2004-06-03
你的方法虽然复杂,但是对于像我这样不知道Hibernate有这种用法的人来说,是很好的知识呀。Thanks for your share too.
|
|
返回顶楼 | |
发表时间:2004-09-08
页面编码也需要是utf-8吗?
|
|
返回顶楼 | |