UTF8 - Hibernate/MySQL 怪异

发布于 2024-08-12 07:25:57 字数 465 浏览 7 评论 0原文

我在生产中有一个数据库,其中所有表都使用 utf8 / utf8_general_ci 编码。除了一种情况之外,这基本上工作正常。

发生什么事情了???正在返回某些字符(中文等);但是,对于同一个表,它们也会通过不同的标准正确返回。

我仔细检查了从 Hibernate 到 MySQL 的连接参数,它们具有良好的字符集集。

我无法理解这是怎么发生的。返回坏字符的标准只是一个简单的 findById:

Criteria criteria = getHibernateSession().createCriteria(CalendarEvent.class);
criteria.add(Restrictions.eq("id", id));
return (CalendarEvent) criteria.uniqueResult();

这只发生在 Solaris 的生产中 - 我无法在本地重现它。

I have a db in production where all of my tables are using utf8 / utf8_general_ci encoding. This is basically working fine except in one scenario.

What happens is that ??? are being returned for some characters (Chinese, etc); however, they are also returned correctly for the same table but via a different criteria.

I've double checked the connection parameters from Hibernate to MySQL and they have the good charset set.

I cannot understand how this can be happening. The criteria that returns the bad characters is just a simple findById:

Criteria criteria = getHibernateSession().createCriteria(CalendarEvent.class);
criteria.add(Restrictions.eq("id", id));
return (CalendarEvent) criteria.uniqueResult();

This is only happening in production on Solaris - I cannot reproduce it locally.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄居者 2024-08-19 07:25:57

在您的连接字符串中,您是否尝试过

jdbc:mysql://localhost/dbname?characterEncoding=utf8

或在启动时添加 JVM 参数 -Dfile.encoding=utf-8应用程序/服务器

In your connection-string have you tried

jdbc:mysql://localhost/dbname?characterEncoding=utf8

or add JVM parameter -Dfile.encoding=utf-8 when starting your application / server

如梦 2024-08-19 07:25:57

尝试在休眠配置文件中设置以下属性:

<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>
<property name="hibernate.connection.charSet">UTF-8</property> 

Try setting the following properties in your hibernate configuration file:

<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>
<property name="hibernate.connection.charSet">UTF-8</property> 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文